【问题标题】:How to avoid defining target tensors in Tensorflow 2 for CTC loss model?如何避免在 Tensorflow 2 中为 CTC 损失模型定义目标张量?
【发布时间】:2020-04-26 13:43:09
【问题描述】:

我正在尝试在具有 CTC 损失的模型上使用 tf.distribute.MirroredStrategy() 在 Tensorflow 2 中进行多 GPU 训练。

问题是模型需要定义 target_tensors 才能编译。 这可能是什么原因? 是否有一些解决方法和编译模型而不定义 target_tensors?

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

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 损失导致了问题。

【问题讨论】:

    标签: python tensorflow keras tensorflow2.0 ctc


    【解决方案1】:

    这通过使用 tf-nightly 版本解决。

    Tf-nightly 不允许在急切执行模式下使用 target_tensors。 使用夜间版本,我的模型在没有目标张量的情况下成功编译(实现没有变化),所以问题解决了。

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 2018-01-16
      • 2020-10-08
      • 2017-07-23
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2017-10-02
      相关资源
      最近更新 更多