“Tensor”对象没有属性“\u keras\u history”

2024-05-28 23:24:05 发布

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

我想在输入张量的列上独立地提取并应用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层或提取这是不可微的。你知道吗

但是没有它我怎么办?你知道吗


Tags: lambda代码inbranchforinputrangeout
1条回答
网友
1楼 · 发布于 2024-05-28 23:24:05

这是因为您直接将后端函数(即K.expand_dims())应用于Keras张量(即out),因此结果将是一个张量(而不是Keras张量)。实际上,Keras张量是张量的一个扩充版本,并且有额外的属性(例如_keras_history),这有助于Keras建立模型。现在,要解决这个问题,您只需要将后端函数放在Lambda层中,以输出Keras张量:

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)

相关问题 更多 >

    热门问题