-1

考虑使用卷积神经网络对字符进行文本分类示例:我想要三层卷积(而不是原始代码中的两层)。这是修改后的三层代码。看来我的形状有问题。请您考虑一下代码并让我知道它有什么问题吗?

4

1 回答 1

2

如果将print(pool1)print(pool2)print(pool3)分别放在第 68、83 和 90 行,您会注意到只打印了前两个:

Tensor("CNN_Layer1/transpose:0", shape=(?, 41, 10, 1), dtype=float32)
Tensor("CNN_Layer2/transpose:0", shape=(?, 11, 10, 1), dtype=float32)

那是因为您在创建新操作时没有注意数据维度。看一下网络维度的变化:

byte_list output shape = (?, 100, 256, 1)
# apply 10x conv1 filters of size (20,256)
conv1 output shape = (?, 81, 1, 10)
# apply max_pooling of size 4 and stride 2 + transpose filter dimension
pool1 output shape = (?, 41, 10, 1)
# apply 10x conv2 filters of size (20,10)
conv2 output shape = (?, 22, 1, 10)
# apply max_pooling of size 4 and stride 2 + transpose filter dimension
pool2 output shape = (?, 11, 10, 1)

然后你尝试应用 10x conv2 大小的过滤器(20,10),但你的张量有形状(?, 11, 10, 1)。如果此操作成功应用于它,它的形状将是(?, -8, 1, 10),但负尺寸是不可能的。因此,问题来自第 86 行。

有多种方法可以解决这个问题,所有这些方法都涉及更改过滤器大小和/或网络架构。只需尝试写下这些维度以跟踪正在发生的事情,您应该能够弄清楚如何去做。:-)

于 2017-03-27T18:12:44.827 回答