使用Keras时,如何更改层中的单位数?

2024-10-01 09:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码可以正常工作。如果我试着把所有的64改成128,我就会得到一个关于形状的错误。如果我在使用Keras时改变人工神经网络的层数,是否需要改变输入数据的形状?我不这么认为,因为它要求输入正确的值。在

作品:

model = Sequential()
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(Activation('softmax'))

sgd3 = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd3)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

不起作用:

^{pr2}$

Tags: 代码addtruemodelinit错误trainuniform
2条回答

你可以在同一个输入上使用不同数量的隐藏层和不同数量的单元/神经元。在

除最后一个外,每个Dense都可以看作是一个隐藏层。最后一个Dense的输出数量应该与期望的输出维度相等(在您的例子中,y的维度似乎是64)。在

试试这个:

model = Sequential()
model.add(Dense(128, input_dim=14, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(128, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(Activation('softmax'))

sgd3 = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd3)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

您根本不需要更改代码段之间的层数。 你改变的是单位的数量。在

稠密(64)是一个有64个隐藏单元的完全连接层。由于它是完全连接的,所以输入单元的数量也会更改为该数字,因此也会更改对输入的要求。在

相关问题 更多 >