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

2024-05-06 03:54:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在Tensorflow 2中使用tf.distribute.MirroredStrategy()进行多GPU训练,在一个CTC丢失的模型上

问题是模型需要定义目标张量才能编译。 这可能是什么原因? 在不定义目标张量的情况下,是否有一些变通方法和编译模型

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

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

该模型使用Keras functional 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]                      
            )

该模型有两个输出,但第二个输出上使用的CTC损耗导致了问题


Tags: 模型self目标model定义tftensorflownetwork
1条回答
网友
1楼 · 发布于 2024-05-06 03:54:43

这是通过使用tf夜间版本解决的

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

相关问题 更多 >