如何避免在张量流2中为CTC损失模型定义目标张量



我正在尝试使用tf.distribute.MirroredStrategy((在Tensorflow 2中对CTC丢失的模型进行多GPU训练。

问题是模型需要定义target_tensor才能编译。造成这种情况的原因是什么?是否有一些变通方法,在不定义target_tensor的情况下编译模型?

如果我没有通过目标,我会得到以下信息:

TypeError: Value passed to parameter 'indices' has DataType float32 not in list of allowed values: uint8, int32, int64

该模型是使用Keras函数API通过使用以下内容定义的:

model = Model(name ='Joined_Model_2',inputs=self.inp, outputs=[self.network.outp, self.network.outp_stt])

模型必须编译为:

self.model_joined.compile(optimizer=optimizer_stt,
loss=losses,
loss_weights= lossWeights,
target_tensors=[target1, target2]                      
)

该模型有2个输出,但第二个输出上使用的CTC丢失导致了问题。

这可以通过使用tf夜间版本来解决。

Tfnight不允许在急切执行模式下使用target_tensors。使用夜间版本,我的模型在没有目标张量的情况下成功编译(在实现中没有更改(,因此问题得到了解决。

相关内容

  • 没有找到相关文章

最新更新