gpt4 book ai didi

python - 如何在keras中连接两层?

转载 作者:IT老高 更新时间:2023-10-28 21:34:48 26 4
gpt4 key购买 nike

我有一个两层神经网络的例子。第一层有两个参数并有一个输出。第二个应该将一个参数作为第一层的结果和一个附加参数。它应该是这样的:

x1  x2  x3
\ / /
y1 /
\ /
y2

所以,我创建了一个包含两层的模型并尝试合并它们,但它返回错误:顺序模型中的第一层必须获得“input_shape”或“batch_input_shape”参数。 就行result.add(merged).

型号:

first = Sequential()
first.add(Dense(1, input_shape=(2,), activation='sigmoid'))

second = Sequential()
second.add(Dense(1, input_shape=(1,), activation='sigmoid'))

result = Sequential()
merged = Concatenate([first, second])
ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)
result.add(merged)
result.compile(optimizer=ada_grad, loss=_loss_tensor, metrics=['accuracy'])

最佳答案

您收到错误是因为定义为 Sequential()result 只是模型的容器,而您尚未为其定义输入。

鉴于您正在尝试build设置 result 以获取第三个输入 x3

first = Sequential()
first.add(Dense(1, input_shape=(2,), activation='sigmoid'))

second = Sequential()
second.add(Dense(1, input_shape=(1,), activation='sigmoid'))

third = Sequential()
# of course you must provide the input to result which will be your x3
third.add(Dense(1, input_shape=(1,), activation='sigmoid'))

# lets say you add a few more layers to first and second.
# concatenate them
merged = Concatenate([first, second])

# then concatenate the two outputs

result = Concatenate([merged, third])

ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)

result.compile(optimizer=ada_grad, loss='binary_crossentropy',
metrics=['accuracy'])

但是,构建具有这种类型输入结构的模型的首选方法是使用 functional api .

以下是您的要求的实现,可帮助您入门:

from keras.models import Model
from keras.layers import Concatenate, Dense, LSTM, Input, concatenate
from keras.optimizers import Adagrad

first_input = Input(shape=(2, ))
first_dense = Dense(1, )(first_input)

second_input = Input(shape=(2, ))
second_dense = Dense(1, )(second_input)

merge_one = concatenate([first_dense, second_dense])

third_input = Input(shape=(1, ))
merge_two = concatenate([merge_one, third_input])

model = Model(inputs=[first_input, second_input, third_input], outputs=merge_two)
ada_grad = Adagrad(lr=0.1, epsilon=1e-08, decay=0.0)
model.compile(optimizer=ada_grad, loss='binary_crossentropy',
metrics=['accuracy'])

回答评论中的问题:

  1. 结果和合并是如何连接的?假设您的意思是它们是如何连接的。

连接的工作方式如下:

  a        b         c
a b c g h i a b c g h i
d e f j k l d e f j k l

即行刚刚加入。

  1. 现在,x1 输入到第一个,x2 输入到第二个,x3 输入到第三个。

关于python - 如何在keras中连接两层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com