Tensorflow:Concat不同的图表,用于与外部数据进行微调

时间:2017-12-19 11:33:33

标签: python tensorflow

我想在tensorflow中实现this paper。它的方法是首先创建两个单独的CNN,然后将它们连接起来进行微调(如图1a所示))。

我目前的情况是:我有两个经过预先训练和保存的模型,每个模型都有一个数据队列输入(因此,没有feed_dict和数据集API),现在我正在关闭微调。我想从磁盘恢复它们并以某种方式连接它们,以便我可以定义一个优化两个网络的优化器。

这是我目前的做法:

# Build data input
    aug_img, is_img, it_img = finetuning_read_training_images(trainset_size=num_steps,
                                                              batch_size=batch_size,
                                                              cropped=cropped,
                                                              base_folder=base_folder)

    # Load the graphs
    tf.reset_default_graph()
    print("Loading ECNN graph...")
    ecnn_graph = tf.train.import_meta_graph(os.path.join(ecnn_path, "ecnn.meta"), clear_devices=True)
    trained_target = tf.get_default_graph().get_tensor_by_name("E-CNN/ecnn_output/ecnn_output_convolution/BiasAdd:0")
    augmented_icnn_input = tf.concat([is_img, trained_target], axis=2)
    icnn_graph = tf.train.import_meta_graph(os.path.join(icnn_path, "icnn.meta"), clear_devices=True, input_map={"aug_img": augmented_icnn_input, "it_img": it_img, "is_img": is_img})

数据输入功能读取3批。 aug_img是源图像,其具有反射,例如当通过玻璃面板拍摄时,将其边缘图增强为第四色通道。 ECNN图应该预测无反射边缘图。 Tensorflow应该增加普通源图像,该图像存储在is_img变量中,带有预测的无反射边缘图,该图应该出现在以trained_targetaugmented_icnn_input开头的行中。然后将增强图像馈送到ICNN图形,然后应该创建无反射图像,因此给出it_img作为目标图像。它再次输入非增广源图像,仅用于张量板可视化。

但现在我无法继续前进。我无法连接两个张量来创建augmented_icnn_input,因为我得到ValueError: Tensor("E-CNN/ecnn_output/ecnn_output_convolution/BiasAdd:0", shape=(?, 224, 224, 1), dtype=float32) must be from the same graph as Tensor("batch:1", shape=(?, 224, 224, 3), dtype=float32).

此外,我似乎没有正确理解input_map与数据输入队列的组合,因为虽然我已经定义了ICNN中的aug_img和其他变量,并在tensorboard中看到它们,但我看不到它们在variables集合中,因此无法映射它们。

所以我想知道:这是将两个子图组合在一个更大的图中的正确方法吗?如何解决我无法在augmented_icnn_input中连接两个张量的问题?为什么我的input_map无效?

0 个答案:

没有答案