在隐藏层后添加两层 keras

我正在尝试构建一个如下所示的神经网络模型:

     input       |     hidden   /       \hidden   output2   |output1

这里是一个简单的代码示例:

model = Sequential()model.add(Conv2D(32, kernel_size=(3, 3),                 activation='relu',                 input_shape=input_shape))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Flatten()) # 从这里开始我想添加一个新的神经网络model.add(Dense(128, activation='relu'))model.add(Dense(num_classes, activation='softmax'))

如何得到预期的模型?

如果我问了一个愚蠢的问题,请原谅,我在人工智能领域还是一个初学者。


回答:

你可以使用keras的函数式API而不是顺序API来实现,如下所示:

from keras.models import Modelfrom keras.layers import Inputfrom keras.layers import Densefrom keras.layers import Flattenfrom keras.layers.convolutional import Conv2Dfrom keras.layers.pooling import MaxPooling2Dnum_classes = 10inp= Input(shape=input_shape)conv1 = Conv2D(32, kernel_size=(3,3), activation='relu')(inp)conv2 = Conv2D(64, (3, 3), activation='relu')(conv1)max_pool = MaxPooling2D(pool_size=(2, 2))(conv2)flat = Flatten()(max_pool)hidden1 = Dense(128, activation='relu')(flat)output1 = Dense(num_classes, activation='softmax')(hidden1)hidden2 = Dense(10, activation='relu')(flat)  #指定隐藏单元的数量output2 = Dense(3, activation='softmax')(hidden2) #指定类别的数量model = Model(inputs=inp, outputs=[output1 ,output2])

你的网络看起来像这样:

Model: "model_1"__________________________________________________________________________________________________Layer (type)                    Output Shape         Param #     Connected to                     ==================================================================================================input_7 (InputLayer)            (None, 64, 256, 256) 0                                            __________________________________________________________________________________________________conv2d_10 (Conv2D)              (None, 62, 254, 32)  73760       input_7[0][0]                    __________________________________________________________________________________________________conv2d_11 (Conv2D)              (None, 60, 252, 64)  18496       conv2d_10[0][0]                  __________________________________________________________________________________________________max_pooling2d_4 (MaxPooling2D)  (None, 30, 126, 64)  0           conv2d_11[0][0]                  __________________________________________________________________________________________________flatten_4 (Flatten)             (None, 241920)       0           max_pooling2d_4[0][0]            __________________________________________________________________________________________________dense_6 (Dense)                 (None, 128)          30965888    flatten_4[0][0]                  __________________________________________________________________________________________________dense_8 (Dense)                 (None, 10)           2419210     flatten_4[0][0]                  __________________________________________________________________________________________________dense_7 (Dense)                 (None, 10)           1290        dense_6[0][0]                    __________________________________________________________________________________________________dense_9 (Dense)                 (None, 3)            33          dense_8[0][0]                    ==================================================================================================Total params: 33,478,677Trainable params: 33,478,677Non-trainable params: 0

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注