我正在尝试对某些数据使用 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 在完全连接层之前会为此工作吗?