张量流:用外部数据对不同的图进行微调

2024-10-01 17:36:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我目前的情况是:我有两个预先训练并保存的模型,每个模型都有一个数据队列输入(因此,没有feed-dict和Dataset-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_target和{}开头的行中。然后将增强后的图像输入到ICNN图中,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_映射与数据输入队列的结合,因为尽管我已经在ICNN中定义了aug_img和其他变量,并且在tensorboard中看到了它们,但是我在variables集合中没有看到它们,因此无法映射它们。在

所以我想知道:这是在一个更大的图中合并两个子图的正确方法吗?我怎样才能解决我不能把augmented_icnn_input中的两个张量合并的问题?为什么我的input_map不起作用?在


Tags: 数据path图像imginputoutputistf

热门问题