TF Learn CNN 例子:如何多加一层?

TF Learn CNN example: How to add one more layer?

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

如果将 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)

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

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