如何在tensorflow中使用feed_dict传递多个输入

7

我有一个由多个子网络组成的网络(多个卷积网络和最后一个完全连接的+ softmax层)。 每个ConvNet都使用特定区域和图像大小进行馈送。 因此,为了馈送我的网络,我为每个convnet输入编写了图像占位符,并为每个批次中所有图像的标签提供了一个标签占位符(所有convnet输入中的所有输入图像具有相同的标签)。 不幸的是,我对feed_dict部分没有任何想法。 例如,此代码仅用于单个convnet训练:

    images_r, labels_r = sess.run([images, labels])
    train_feed = {images_placeholder: images_r,
              labels_placeholder: labels_r}
    _, loss_value = sess.run([train_op, loss_func], feed_dict=train_feed)

我该如何扩展上面的代码以满足所有卷积网络的需求?

我不确定我理解你的问题是否正确。 您的网络有多个输入点吗?如果是这样,在每个训练步骤中,您需要为所有这些输入点提供输入吗? - GPhilo
2个回答

5

因此,针对每个conv网络,如果输入的placeholders为:conv_1_inputconv_2_input.... conv_N_input,那么您可以将列表传递到feed_dict中,如下所示:

train_feed = {`conv_1_input`: image_1, `conv_2_input`: image_2,.. `conv_N_input`: image_N,
          labels_placeholder: labels_r}
_, loss_value = sess.run([train_op, loss_func], feed_dict=train_feed)

使用此方法后,我遇到了以下错误: TypeError: 无法将feed_dict键解释为Tensor:无法将函数转换为Tensor。 - hajbabaeim
变量 conv_1_inputconv_2_input 应该是张量,但错误提示它们不是。 - Vijay Mariappan

-2

你应该在计算图内分割/切片你的图像,并使用单个输入。


很不幸,我的所有补丁(来自原始图像)并没有完全相同的特征,并且我是根据一些地标从原始图像中提取它们的。(例如,假设我们有一个人脸的原始图像,我的地标是眼睛中心的5个点,鼻尖和嘴角)。 因此,我必须使用提取的补丁来馈送所有相关的feed_dict。 - hajbabaeim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接