keras构建用于MNIST分类的多层感知机

和tensorflow一样,用keras库建立MLP神经网络。构建网络加载数据集,进行建模,然后训练模型,进行模型测试以及对模型的评估。
从keras中导入模块

import tensorflow as tf
import keras
import os
from keras.models import Sequential
from keras.layers import Dense,Activation
from keras.optimizers import SGD
from tensorflow.examples.tutorials.mnist import input_data

加载数据集,可以用注释的部分,由于我的还是报错,所以我换了这一种方法,效果也还是差不多。

# mnist_home=os.path.join(datasetslib.datasets_root,'mnist')
# mnist=input_data.read_data_sets(mnist_home,one_hot=True)
mnist = input_data.read_data_sets('MNIST_data',one_hot=True)
x_train=mnist.train.images
x_test=mnist.test.images
y_train=mnist.train.labels
y_test=mnist.test.labels
#print(x_train.shape,y_train.shape)
#print(x_test.shape,x_test.shape)

定义超参数

num_inputs=784
num_outputs=10
num_layers=2
num_neurons=[]
for i in range(num_layers):
    num_neurons.append(256)
learning_rate=0.01
n_epochs=50
batch_size=100

建立模型

#创建一个顺序模型
model=Sequential()
#添加第一个隐藏层,在第一个隐藏层中必须添加张量的形状
model.add(Dense(units=num_neurons[0],activation='relu',
               input_shape=(num_inputs,)))
#添加第二个隐藏层
model.add(Dense(units=num_neurons[1],activation='relu'))
#添加具有激活函数softmax的输出层
model.add(Dense(units=num_outputs,activation='softmax'))
#输出模型的详细信息
model.summary()

模型建立好以后得到结果:
在这里插入图片描述
使用SGD优化器编译模型和训练模型

#使用SGD优化器编译模型
model.compile(loss='categorical_crossentropy',
             optimizer=SGD(lr=learning_rate),
             metrics=['accuracy'])
#训练模型
model.fit(x_train,y_train,
         batch_size=batch_size,
           epochs=n_epochs)

在模型训练的过程中可以看到每次训练迭代的损失函数值和分类精度:在这里插入图片描述
10-40省略
在这里插入图片描述
评估模型并输出损失函数值和分类精度

score=model.evaluate(x_test,y_test)
print('\n Test loss:',score[0])
print('Test accuracy:',score[1])

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值