【问题标题】:Tensorflow CNN Shape errorTensorFlow CNN 形状错误
【发布时间】:2017-10-25 19:45:23
【问题描述】:

我正在尝试对一些数据使用 CNN,但我的损失函数出现错误,因为我的模型的输出是 [1000, 1000, 4000] 的形状,而它应该是 [1000, 4000] .在这种情况下,前 1000 个是批量大小,而 4000 是我拥有的类数,因为这是一个分类问题。

我想我可能需要在完全连接层之后再次使用 tf.reshape() 函数来获得正确的输出,但我不太确定如何做到这一点。我已经尝试过 tf.reshape(output [-1, 4000]),但这仍然保留了其他 1000 个。

这是我的代码:

    cnn_input = tf.reshape(input, [-1, 1000, 1])
    net = slim.conv2d(cnn_input, 128, [3])
    net = slim.pool(net, [2], "MAX")
    output = slim.fully_connected(net, num_classes, activation_fn=tf.nn.softmax)
    return output

基本上,我的输出需要是 2 级的形状,但由于某种原因,它变成了 3 个维度。我需要输出的形状为 [1000, 4000],即批量大小 x num_classes。

任何帮助将不胜感激。提前致谢!

顺便说一句,我正在使用 tf-slim 库。

编辑:tf.flatten 会在全连接层之前为此工作吗?

【问题讨论】:

    标签: tensorflow neural-network tf-slim


    【解决方案1】:

    我遇到了同样的错误。 documentation (line 1609)(链接自here)表示“fully_connected”操作应该使输出变平,但事实并非如此。我只是按照你的建议在最后几个完全连接的操作之前使用了 slim.flatten ,但我没有具体的证据表明它还有效。

    6 个月没有 cmet,我认为对其他人来说有总比没有好,但如果其他人有更多的见解,将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-05
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多