Error:InvalidArgumentError: sequence_length(0) <= 80

原因:ctcloss计算要求所有sequence_length要小于max_time_step,说明你的数据集中设定的sequence_length大于了max_time_step(数据集中设定的seq_len 和 模型输出的 数值不一致)。
解决如下:
这里的input_len一般设置成模型输出的特征图的时间序列长度,比如模型输出[None, 80, 94]) ,[Batch,seq_len,classes],而80就是seq_len,当然这个一般是根据图像的长度来设置,这个应该和数据集中设置的input_len一致。
#数据集中设定
input_len = np.array([self.args.width * self.args.height // mod]) #80
#模型最终输出 (None, 80, 94)
y = tf.keras.layers.Dense(num_classes, name='dense', activation='softmax')(x)

文章讨论了一个在使用CTCLoss时遇到的错误,即sequence_length超过了max_time_step。问题源于数据集中的input_len与模型输出的序列长度不匹配。解决方案是确保数据集中的input_len设置与模型输出的时间序列长度一致,例如模型输出[None,80,94],则input_len应设为80。此外,提到了使用Dense层和softmax激活函数对模型进行配置。

4269

被折叠的 条评论
为什么被折叠?



