Я хотел бы изменить / изменить операции, используя замороженный график.
Например, как показано ниже, измените ops с «upsample2D, чей метод изменения размера ResizeNearestNeighbor» на «upsample2D, чей метод изменения размера ResizeBilinear»
with tf.device('/gpu:0'):
with tf.gfile.GFile(filename, 'rb') as file:
serialized_graph = file.read()
graph_def.ParseFromString(serialized_graph)
tf.import_graph_def(graph_def, name='')
graph_replace = tf.contrib.graph_editor.graph_replace
nodes = graph_def.node
for node in nodes:
if "ResizeNearestNeighbor" in node.name :
print ("===========> ", node.name)
node.op ="ResizeBilinear"
# also need to change node name
nodes = graph_def.node
for node in nodes:
print (node.name)
tf.train.write_graph(graph_def, "./", name='modified.pb')
На самом деле вышеприведенный код не работает; Я думаю, что это связано с непредсказуемым типом в nodedef; также, ошибка декодирования google.protobuf.message.DecodeError: Ошибка разбора сообщения при импорте измененного графика
Я думаю, что следующие методы могут работать, но какая-нибудь помощь для этого?
graph_replace = tf.contrib.graph_editor.graph_replace
graph_replace(node, {node.xx: new_node.xx })
или
tf.import_graph_def(graph_def, input_map={node: a new node})
Спасибо