TF了解CNN示例:如何再添加一个图层?

时间:2017-03-27 10:40:51

标签: tensorflow tflearn

考虑Text Classification Using Convolutional Neural Networks on Characters示例: 我希望有三层卷积(而不是原始代码中的两层)。 Here is the modified code with three layers。看来我的形状有问题。你能不能考虑一下代码,让我知道它有什么问题?

1 个答案:

答案 0 :(得分:2)

如果您分别在第68,83和90行放置print(pool1)print(pool2)print(pool3),您会发现只有前两个被打印出来:

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)

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

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