如何在keras中同时训练多个神经网络?

烫发 质疑

如何多次训练1个模型并将其合并到输出层?

例如:

model_one = Sequential() #model 1
model_one.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28)))
model_one.add(Flatten())
model_one.add(Dense(128, activation='relu'))

model_two = Sequential() #model 2
model_two.add(Dense(128, activation='relu', input_shape=(784)))
model_two.add(Dense(128, activation='relu'))

model_???.add(Dense(10, activation='softmax')) #combine them here

model.compile(loss='categorical_crossentropy', #continu together
          optimizer='adam',
          metrics=['accuracy'])


model.fit(X_train, Y_train, #continu together somehow, even though this would never work because X_train and Y_train have wrong formats
      batch_size=32, nb_epoch=10, verbose=1)

我听说我可以通过图形模型来做到这一点,但是我找不到关于它的任何文档。

编辑:答复以下建议:

A1 = Conv2D(20,kernel_size=(5,5),activation='relu',input_shape=( 28, 28, 1))
---> B1 = MaxPooling2D(pool_size=(2,2))(A1)

抛出此错误:

AttributeError: 'Conv2D' object has no attribute 'get_shape'
Lif3line

图形符号会为您完成。本质上,您为每一层提供了唯一的句柄,然后使用末尾方括号中的句柄链接回到上一层:

layer_handle = Layer(params)(prev_layer_handle)

请注意,第一层必须是,Input(shape=(x,y))且之前没有连接。

然后,当您制作模型时,您需要告诉它,它期望有一个列表的多个输入:

model = Model(inputs=[in_layer1, in_layer2, ..], outputs=[out_layer1, out_layer2, ..])

最后,在训练它时,您还需要提供与您的定义相对应的输入和输出数据的列表:

model.fit([x_train1, x_train2, ..], [y_train1, y_train2, ..])

同时,其他所有内容都是相同的,因此您只需要将上述内容组合在一起即可为您提供所需的网络布局:

from keras.models import Model
from keras.layers import Input, Convolution2D, Flatten, Dense, Concatenate

# Note Keras 2.02, channel last dimension ordering

# Model 1
in1 = Input(shape=(28,28,1))
model_one_conv_1 = Convolution2D(32, (3, 3), activation='relu')(in1)
model_one_flat_1 = Flatten()(model_one_conv_1)
model_one_dense_1 = Dense(128, activation='relu')(model_one_flat_1)

# Model 2
in2 = Input(shape=(784, ))
model_two_dense_1 = Dense(128, activation='relu')(in2)
model_two_dense_2 = Dense(128, activation='relu')(model_two_dense_1)

# Model Final
model_final_concat = Concatenate(axis=-1)([model_one_dense_1, model_two_dense_2])
model_final_dense_1 = Dense(10, activation='softmax')(model_final_concat)

model = Model(inputs=[in1, in2], outputs=model_final_dense_1)

model.compile(loss='categorical_crossentropy', #continu together
              optimizer='adam',
              metrics=['accuracy'])

model.fit([X_train_one, X_train_two], Y_train,
          batch_size=32, nb_epoch=10, verbose=1)

可以在Functional Model API中找到文档我建议您阅读其他问题,或者也查阅Keras的回购协议,因为该文档目前没有太多示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在keras中的CPU上并行训练多个神经网络

如何在用 Keras 构建和训练的神经网络中处理错误预测?

如何在keras模型中验证神经网络的结构?

如何检查训练keras分类器/神经网络的课程?

零精度训练Keras中的神经网络

如何使用 Keras 创建一个从表格数据中训练的神经网络?

如何保存和使用在 PyTorch/TensorFlow/Keras 中开发的训练好的神经网络?

如何在Matlab中逐步训练神经网络?并反复组合它们

如何在Matlab中在大样本集上训练神经网络?

预训练如何改善神经网络中的分类?

神经网络训练

如何正确训练我的神经网络

如何只训练神经网络的前端?

在训练神经网络中改组数据

如何在keras中可视化卷积神经网络中间层的输出?

在添加到keras中的(预训练/非训练)神经网络的中间层之后训练softmax层

如何使用Keras训练和调整人工多层感知器神经网络?

Keras神经网络训练期间的“损失:难忘”

如何使用 keras 构建神经网络

keras中的神经网络未收敛

Keras中神经网络的尺寸误差

神经网络偏差训练

神经网络的再训练

神经网络在线训练

卷积神经网络在火炬中。训练网络时出错

如何交替训练多个堆叠神经网络?(凯拉斯)

使用单个优化器训练多个连接的神经网络

是否可以在Vowpal Wabbit中训练具有多个隐藏层的神经网络?

如何在python中修改神经网络的代价函数