繁体   English   中英

'Tensor'对象没有属性'_keras_history'

[英]'Tensor' object has no attribute '_keras_history'

我想在输入张量的列上提取并独立应用Conv2D层,但是在添加代码之后:

accelerometer_input = Input(shape=(1400, 3))

for i in range(3):
    out = Lambda(lambda x: x[:,:, i:i+1])(accelerometer_input) # Extracting the ith channel
    out = K.expand_dims(out, axis=1)
    out = Conv2D(64, (30, 1), data_format="channels_first")(out)  
    branch_outputs.append(out)
out_put = K.concatenate(branch_outputs)

它给了我标题的错误。 我认为这是由于Lambda层或提取无法区分的缘故。

但是,没有它我该怎么办?

那是因为您直接在K.expand_dims() Tensor(即out )上应用了一个后端函数(即K.expand_dims() ),因此结果将是Tensor(而不是Keras Tensor)。 实际上,Keras Tensor是Tensor的增强版本,具有其他属性(例如_keras_history ),可以帮助_keras_history构建模型。 现在,要解决此问题,您只需要将后端函数放在Lambda层中即可获得Keras Tensor作为输出:

out = Lambda(lambda x: K.expand_dims(x, axis=1))(out)

相同的事情适用于使用K.concatenate() 但是,在这种情况下,Keras中有一个特定的层:

from keras.layers import concatenate, Concatenate

# use functional interface
out_put = concatenate(branch_outputs)

# or use layer class
out_put = Concatenate()(branch_outputs)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM