
(一)问题描述
我们需要定义的网络结构如下,一共有四层网络,依次含有784、512、512、10个神经元节点,接下来我们使用Keras来实现这个模型。
(二)模型实现
(1)导入类库
from tensorflow import keras
(2)模型定义
细心的朋友可能已经发现,这是用来识别MNIST数据集的模型
model = keras.models.Sequential()
model.add(keras.layers.Dense(784, input_dim=784, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(10, kernel_initializer='normal', activation= 'softmax'))
(3)模型编译
使用交叉熵作为损失函数,使用Adam优化算法:
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
(4)模型训练
model.fit(x_train, y_train, epochs=10, batch_size=200, verbose=1)
(5)模型保存
model.save('/model.h5')
(6)完整代码
输入数据即可开始训练,注意这里的代码没有输入数据的操作!仅提供设计思路。
from tensorflow import keras
# 定义模型
model = keras.Sequential()
model.add(keras.layers.Dense(784, input_dim=784, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(512, kernel_initializer='normal', activation= 'tanh'))
model.add(keras.layers.Dense(10, kernel_initializer='normal', activation= 'softmax'))
# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 拟合模型
model.fit(x_train, y_train, epochs=10, batch_size=200, verbose=1)
(三)总 结
在这一节中我们对于使用Sequential方法定义模型做了介绍,有任何的问题请在评论区留言,我会尽快回复,谢谢支持!