导入安装包
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Flatten
from keras.optimizers import SGD #梯度下降
import keras.datasets.mnist as mnist
加载并划分数据集
使用手写数字数据
#划分数据集
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train.shape
将数据维度由(60000,28,28)转为(60000,28*28),即(60000,784)
x_train = x_train.reshape(60000,784)
x_test = x_test.reshape(10000,784)
数据处理
数据类型转换:
x_train和x_test里的数据都是int整数,要把它们转换成float32浮点数
数据归一化处理:
要把x_train和x_test里的整数变成0-1之间的浮点数,就要除以255。因为色彩的数值是0-255,所以要变成0-1之间的浮点数,只要简单的除以255
one-hot处理:
y值0-9数字变成onehot模式,以后就可以把分类数据变成这种形式
#设置数据类型为float32
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
# 数据值映射在[0,1]之间
x_train = x_train/255
x_test = x_test/255
#数据标签one-hot处理
y_train = keras.utils.to_categorical(y_train,10)
y_test = keras.utils.to_categorical(y_test,10)
print(y_train[1])
创建模型并训练
optimizer优化器:梯度下降
不懂梯度下降的,看这篇文章(通俗易懂讲解梯度下降法),写得很通俗易懂
loss损失函数:categorical_crossentropy
metrics评价指标:准确度
#建立神经网络
model = Sequential()
model.add(Dense(256,activation='relu',input_shape=(784,))) #第一层隐藏层,神经元256
model.add(Dense(256,activation='relu',input_dim=784))
model.add(Dense(256,activation='relu')) #第二层隐藏层,神经元256
model.add(Dense(10,activation='softmax')) #输出维度为10,激活函数:softmax
#编译模型
model.compile(optimizer=SGD(),
loss='categorical_crossentropy',
metrics=['acc'])
#训练模型
model.fit(x_train,y_train,batch_size=100,epochs=15,validation_data=(x_test, y_test))
#打印模型
model.summary()
参考:
Keras-建立简单神经网络
写文不容易,请给个赞吧!