如何在cnn + ctc网络中使用tf.nn.ctc_loss

时间:2017-06-26 14:58:58

标签: tensorflow deep-learning speech-recognition conv-neural-network

最近,我尝试使用tensorflow在文章Towards End-to-End Speech Recognition with Deep Convolutional Neural Networks上实现cnn + ctc网络。

我尝试将批量谱图数据(形状:(10,120,155,3),batch_size为10)输入10个卷积层和3个完全连接的层。因此连接ctc层之前的输出是2d数据(形状:(10,1024))。

这是我的问题:我想在tensorflow库中使用tf.nn.ctc_loss函数,但是它会生成 ValueError:Dimension必须为2,但是对于' transpose'(op: ' Transpose')输入形状:[?,1024],[3]

我猜这个错误与我的2d输入数据的维度有关。在tensorflow官方网站中描述ctc_loss函数需要一个带有形状的3d输入(batch_size x max_time x num_classes)。

那么,' num_classes'的额外维度是什么? ?我该怎么改变我的cnn + fc输出数据的形状?

1 个答案:

答案 0 :(得分:2)

每个时间步应应用完全连接的层。 这就像在递归神经网络中每个时间步长应用相同的密集层。 对于卷积层的输出,时间步长是宽度。

例如,输出形状为:

  1. 卷积:(10,120,155,3)=(批次,高度,宽度,通道)
  2. flatten:(10,155,120 * 3)=(batch,max_time,features)
  3. 完全连接:(10,155,1024),(每个时间步长应用相同的密集层)
  4. (10,155,num_classes)
  5. 预计在tensorflow中ctc_loss的形状。