Keras: Merge/Concatenate Layer: TypeError: __init__() got multiple values for argument 'axis'
Keras: Merge/Concatenate Layer: TypeError: __init__() got multiple values for argument 'axis'
我创建了以下网络。这个想法是结合 left
和 right
的输出,然后发送到 LSTM 模型。
EMBED_DIM = 4
look_back = 6
feature_num = 2
ENCODE_DIM = 676
left = Sequential()
left.add(Dense(EMBED_DIM,input_shape=(ENCODE_DIM,)))
left.add(RepeatVector(look_back))
left.add(Reshape((look_back,EMBED_DIM)))
right = Sequential()
right.add(Lambda(lambda x: x,input_shape=(look_back,feature_num)))
# create and fit the LSTM network
model = Sequential()
model.add(Concatenate([left, right], axis = 2,input_shape=(look_back, EMBED_DIM + feature_num) ))
model.add(LSTM(8, input_shape=(look_back,feature_num + EMBED_DIM)))
model.add(Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam')
我正在尝试连接左右的输出,然后将新的张量发送到 LSTM 模型。
但是,我收到以下错误:
TypeError Traceback (most recent call last)
<ipython-input-156-275f5597cdad> in <module>()
---> 37 model.add(Concatenate([left, right], axis = 2,input_shape=(look_back, EMBED_DIM + feature_num) ))
38 model.add(LSTM(8, input_shape=(look_back,feature_num + EMBED_DIM)))
39
TypeError: __init__() got multiple values for argument 'axis'
知道我做错了什么吗?我可以添加一个 Concatenate
层作为模型的第一层吗?谢谢!
顺序模型并不意味着有分支。使用函数 API 模型。
让我们从左边和右边得到"tensors":
leftOutput = left.output
rightOutput = right.output
现在,Concatenate
层遵循与所有其他层相同的逻辑。 (首先创建它,然后使用输入张量调用它):
#first parentheses: create the layer / second parentheses: call the layer with inputs
output = Concatenate(axis=2)([leftOutput,rightOutput])
让我们将模型的其余部分也保留为函数 API:
output = LSTM(8)(output)
output = Dense(2)(output)
现在我们创建模型,告诉它输入和输出是什么:
inputTensorLeft = left.input
inputTensorRight = right.input
fullModel = Model([inputTensorLeft,inputTensorRight], output)
请注意,您最终得到了三个模型,但其中一个包含另外两个。他们共享相同的权重。如果您正在训练共享路径,则训练一个人会训练其他人。
我创建了以下网络。这个想法是结合 left
和 right
的输出,然后发送到 LSTM 模型。
EMBED_DIM = 4
look_back = 6
feature_num = 2
ENCODE_DIM = 676
left = Sequential()
left.add(Dense(EMBED_DIM,input_shape=(ENCODE_DIM,)))
left.add(RepeatVector(look_back))
left.add(Reshape((look_back,EMBED_DIM)))
right = Sequential()
right.add(Lambda(lambda x: x,input_shape=(look_back,feature_num)))
# create and fit the LSTM network
model = Sequential()
model.add(Concatenate([left, right], axis = 2,input_shape=(look_back, EMBED_DIM + feature_num) ))
model.add(LSTM(8, input_shape=(look_back,feature_num + EMBED_DIM)))
model.add(Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam')
我正在尝试连接左右的输出,然后将新的张量发送到 LSTM 模型。
但是,我收到以下错误:
TypeError Traceback (most recent call last)
<ipython-input-156-275f5597cdad> in <module>()
---> 37 model.add(Concatenate([left, right], axis = 2,input_shape=(look_back, EMBED_DIM + feature_num) ))
38 model.add(LSTM(8, input_shape=(look_back,feature_num + EMBED_DIM)))
39
TypeError: __init__() got multiple values for argument 'axis'
知道我做错了什么吗?我可以添加一个 Concatenate
层作为模型的第一层吗?谢谢!
顺序模型并不意味着有分支。使用函数 API 模型。
让我们从左边和右边得到"tensors":
leftOutput = left.output
rightOutput = right.output
现在,Concatenate
层遵循与所有其他层相同的逻辑。 (首先创建它,然后使用输入张量调用它):
#first parentheses: create the layer / second parentheses: call the layer with inputs
output = Concatenate(axis=2)([leftOutput,rightOutput])
让我们将模型的其余部分也保留为函数 API:
output = LSTM(8)(output)
output = Dense(2)(output)
现在我们创建模型,告诉它输入和输出是什么:
inputTensorLeft = left.input
inputTensorRight = right.input
fullModel = Model([inputTensorLeft,inputTensorRight], output)
请注意,您最终得到了三个模型,但其中一个包含另外两个。他们共享相同的权重。如果您正在训练共享路径,则训练一个人会训练其他人。