天天看点

AttributeError: 'Tensor' object has no attribute '_keras_history'

问题描述:

output.shape为(?, 8, 257, 1)

output=K.expand_dims(output, axis=2)

output.shape为(?, 8, 1,257, 1)

经过维度扩展之后,

model = Model(inputs=(model_input1,model_input2), outputs=output)报错

AttributeError: 'Tensor' object has no attribute '_keras_history'

原因:

keras/tensorflow数据结构混用

在keras中,每个tensorflow operation 需要用一下三种方式封装:

  1. Using 

    keras.backend

     functions,
  2. Lambda

     layers,
  3. Designated 

    keras

     functions with the same behavior.

解决:

使用keras中的Reshape层来替换expand_dims来进行维度变换,比如

from keras import layers

from keras import backend as K

output1=K.expand_dims(output1, axis=2)

output1=layers.Reshape((output1.get_shape().as_list()[1],1,output1.get_shape().as_list()[2],output1.get_shape().as_list()[3]))(output1)

继续阅读