'Tensor' object 没有属性“_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
层或 extraction 不可区分。
可是没有它怎么办呢?
那是因为您直接在 Keras 张量(即 out
)上应用后端函数(即 K.expand_dims()
),因此结果将是一个张量(而不是 Keras 张量)。实际上,Keras Tensor 是 Tensor 的增强版本,并具有其他属性(例如 _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)
我想在输入张量的列上独立提取和应用 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
层或 extraction 不可区分。
可是没有它怎么办呢?
那是因为您直接在 Keras 张量(即 out
)上应用后端函数(即 K.expand_dims()
),因此结果将是一个张量(而不是 Keras 张量)。实际上,Keras Tensor 是 Tensor 的增强版本,并具有其他属性(例如 _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)