尝试编译keras模型时发生错误ValueError:使用dtype float32的Tensor的Tensor转换请求dtype int64

时间:2019-03-24 08:54:03

标签: python tensorflow keras

我正在尝试使用tensorflow制作语音识别器,并且遇到了该错误

  

ValueError:Tensor转换请求Tensor具有dtype int64   dtype float32:'Tensor(“ loss_2 / lambda_loss / ExpandDims:0”,shape =(?,   1),dtype = float32)'

  

TypeError:“ Mul”操作的输入“ y”具有不匹配的float32类型   输入参数'x'的int64。

将tensorflow作为tf导入的最小运行代码

train_input_val = tf.keras.layers.Input(name='the_input', shape=[None,num_features], dtype='float32')
seq_len = tf.keras.layers.Input(name='input_length', shape=[1], dtype='int64')

y_pred = tf.keras.layers.Lambda(ctc_decode_func ,name = 'lambda')([train_input_val, seq_len])
model2 = tf.keras.Model(inputs=[train_input_val,seq_len],outputs=y_pred)

model2.compile(loss={'lambda': lambda y_true, y_pred: y_true}, optimizer='adam')

和ctc_decode_func定义为

def ctc_decode_func(args):
    y_pred, seq_len = args
    y_pred,log_prob = tf.keras.backend.ctc_decode(y_pred, tf.squeeze(seq_len))
    return y_pred

我尝试将所有内容强制转换为int64,但错误仍然存​​在。我什至不知道lambda层的哪一部分引发了错误。

请帮助

0 个答案:

没有答案