Буквально я хочу импортировать предварительно обученную модель с помощью load_graph () и объединить карту объектов, извлеченную через каждый слой, с новым слоем модели. Как мне это сделать?
Я написал функцию load_graph () следующим образом.
def load_graph(frozen_graph_filename):
# We load the protobuf file from the disk and parse it to retrieve the
# unserialized graph_def
with tf.gfile.GFile(frozen_graph_filename, 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
# Then, we import the graph_def into a new Graph and returns it.
with tf.Graph().as_default() as graph:
# The name var will prefix every op/nodes in your graph
# Since we load everything in a new graph, this is not needed.
tf.import_graph_def(graph_def, name="")
return graph
Следующее - получить предварительно обученный граф с помощью функции load_graph (), предоставив тензоры. на графике в качестве карты промежуточных объектов и обучите новую модель.
new_input = tf.placeholder(tf.float32, shape=[None, IMAGE_SHAPE[0], IMAGE_SHAPE[1], 3])
new_label = tf.placeholder(tf.float32, shape=[None, IMAGE_SHAPE[0], IMAGE_SHAPE[1], 2])
# Load Graph
graph = load_graph("./frozen_model.pb")
input_lidar = graph.get_tensor_by_name('input_lidar:0')
hidden_layer1 = graph.get_tensor_by_name('hidden_layer1:0')
hidden_layer2 = graph.get_tensor_by_name('hidden_layer2:0')
output = graph.get_tensor_by_name('output:0')
keep_probability = graph.get_tensor_by_name('keep_probability:0')
logits = GSNet(input_lidar, , input_lidar, keep_probability, NUM_OF_CLASSESS_IMG, hidden_layer1, hidden_layer2, output)
...
_, cost, _ = sess.run([train_step, loss, output_lid], feed_dict=feed_dict)
После выполнения кода появляется следующая ошибка. Любой совет, кроме вышеупомянутого, чтобы помочь мне с тем, что я пытаюсь сделать?
ValueError: Tensor("Relu:0", shape=(?, 80, 288, 32), dtype=float32) must be from the same graph as Tensor("Relu:0", shape=(?, 80, 288, 32), dtype=float32).