【问题标题】:How to feed multiple inputs through feed_dict in tensorflow如何通过 tensorflow 中的 feed_dict 提供多个输入
【发布时间】:2017-12-07 12:25:02
【问题描述】:

我有一个由多个子网络组成的网络(多个卷积网络和最后一个全连接 + 软最大层)。每个 ConvNet 提要具有特定区域和图像大小。因此,为了给我的网络提供数据,我为每个 convnet 输入编写图像占位符,一个标签占位符来提供一批中所有图像的标签(所有 convnet 输入中的所有输入图像都具有相同的标签)。 不幸的是,我对 feed_dict 部分一无所知。 例如,此代码仅用于一次卷积网络训练:

    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)

如何扩展上述代码以馈送所有转换网络?

【问题讨论】:

  • 我不确定您的问题是否正确。您有多个网络输入点?如果是这样,在每个训练步骤中,您需要为所有此类输入点提供输入吗?

标签: tensorflow


【解决方案1】:

因此,对于每个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: Cannot translate feed_dict key as Tensor: Can not convert a function into a Tensor.
  • 变量conv_1_inputconv_2_input应该是张量,错误说不是这样。
【解决方案2】:

您应该在计算图中拆分/切片您的图像,并改用单个输入。

【讨论】:

  • 不幸的是,我的所有补丁(来自原始图像)都没有相同的特征,我根据一些地标从原始图像中提取它们。 (例如,假设我们有一张人脸的原始图像,我的地标是眼睛中心、鼻尖和唇角的 5 个点)。所以,我必须使用我提取的补丁来提供所有相关的 feed_dict。
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2015-08-22
相关资源
最近更新 更多