Skip to content
Snippets Groups Projects
Commit 119bbca2 authored by Yaman Umuroglu's avatar Yaman Umuroglu
Browse files

[Wrapper] remove unused set_attribute from ModelWrapper

we use the CustomOp attribute setters for most cases instead
parent d9b609f1
No related branches found
No related tags found
No related merge requests found
......@@ -317,41 +317,3 @@ class ModelWrapper:
self.model.metadata_props.append(metadata_prop)
else:
metadata_prop.value = value
def set_attribute(self, node, attribute_name, value):
"""Sets a custom node attribute of given name with given value"""
"""Data types of attributes in onnx are encoded:
2 : integer
3 : string
so in the beginning a dictionary is introduced with the keys
to this encryption"""
# TO DO: Add additional encryption (i.e. float)
data_type_dict = {}
data_type_dict["string"] = 3
data_type_dict["int"] = 2
attribute = util.get_by_name(node.attribute, attribute_name)
# check if attribute is integer
# For encryption see data_type_dict
if attribute.type == data_type_dict["int"]:
if type(value) is int:
attribute.i = value
else:
raise ValueError(
"Attribute expects integer! {} is of type {}!".format(
value, type(value)
)
)
elif attribute.type == data_type_dict["string"]:
if type(value) is str:
attribute.s = value.encode("UTF-8")
else:
raise ValueError(
"Attribute expects string! {} is of type {}!".format(
value, type(value)
)
)
else:
raise Exception("This datatype is not supported, please add to encryption")
return attribute
from onnx import TensorProto, helper
from finn.core.datatype import DataType
from finn.core.modelwrapper import ModelWrapper
from finn.util.basic import get_by_name
def test_set_attribute():
mw = 8
mh = 8
pe = 4
simd = 4
idt = odt = wdt = DataType.BIPOLAR
inp = helper.make_tensor_value_info("inp", TensorProto.FLOAT, [1, mw])
outp = helper.make_tensor_value_info("outp", TensorProto.FLOAT, [1, mh])
node_inp_list = ["inp", "weights"]
FCLayer_node = helper.make_node(
"StreamingFCLayer_Batch",
node_inp_list,
["outp"],
domain="finn",
backend="",
code_gen_dir="",
executable_path="",
resType="ap_resource_lut()",
MW=0,
MH=mh,
SIMD=simd,
PE=pe,
inputDataType=idt.name,
weightDataType=wdt.name,
outputDataType=odt.name,
)
graph = helper.make_graph(
nodes=[FCLayer_node], name="fclayer_graph", inputs=[inp], outputs=[outp]
)
model = helper.make_model(graph, producer_name="fclayer-model")
model = ModelWrapper(model)
# test cases
value_to_set = "fpgadataflow"
model.set_attribute(FCLayer_node, "backend", value_to_set)
value = get_by_name(FCLayer_node.attribute, "backend")
assert value.s.decode("UTF-8") == value_to_set
value_to_set = mw
model.set_attribute(FCLayer_node, "MW", value_to_set)
value = get_by_name(FCLayer_node.attribute, "MW")
assert value.i == value_to_set
value_to_set = idt.name
model.set_attribute(FCLayer_node, "inputDataType", value_to_set)
value = get_by_name(FCLayer_node.attribute, "inputDataType")
assert value.s.decode("UTF-8") == value_to_set
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment