keras搭建基本网络

说明:此处采用mnist数据集来进行分类,mnist是28*28的灰度图像,共有60000个数据,标签种类有10000个,如下所示:

import numpy as np
from time import time
from keras.datasets import mnist     
from keras.utils import np_utils            # keras自带的numpy
from keras.models import Sequential         #models.Sequential,用来一层一层一层的去建立神经层
from keras.layers import Dense, Activation  #layers.Dense 意思是这个神经层是全连接层,Activation 激励函数
from keras.optimizers import RMSprop        #optimizers.RMSprop 优化器采用 - RMSprop,加速神经网络训练方法
np.random.seed(1337)  # 让每次的随机数相似
# 1.数据准备
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 数据的格式: X shape (60,000 28x28), y shape (10,000)
#其中X是图片28*28,y是标签 10000个
#》》》》》》》》》》》》数据预处理《《《《《《《《《《
X_train = X_train.reshape(X_train.shape[0],-1)#((60000,28,28)变(60000,784))-1的意思是:懒的写维度,np自己计算
X_train1 = X_train/255     # 训练数据归一化处理
X_test = X_test.reshape(X_test.shape[0],-1)
X_test1 = X_test/255      # 测试数据归一化处理
y_train1 = np_utils.to_categorical(y_train,num_classes = 10) #我们将标签其1x1维,变为1x10维,将y one-hot化
y_test = np_utils.to_categorical(y_test,num_classes = 10)
#》》》》》》》》》》》》模型构建《《《《《《《《《《#
#  2.一种创建模型的方法
model = Sequential([Dense(32,input_dim=784),Activation('relu'),
                    Dense(10),Activation('softmax')])
#第一层Dense神经层,32是输出的维度,784是输入的维度,激励函数是 relu函数,经过激励函数之后,就变成了非线性的数据
#第二层 Dense神经层,我们定义它有 10 个输出的 feature,激励函数是 softamx函数,用来分类
#RMSprop作为优化器,
rmsprop = RMSprop(lr=0.001, rho=0.9, epsilon=1e-06 , decay=0.0)#lr学习率,建议保持优化器的其他默认参数不变
#   3.激活模型
model.compile(optimizer=rmsprop, loss='categorical_crossentropy',#优化器选择rmsporp,
              metrics=['accuracy'])  #损失函数,分类和回归问题的不一样,分类用的是交叉熵, metrics评价函数
#   4.训练网络
t0 = time()        #起始位置时间点
print('start training: ')
# Another way to train the model
model.fit(X_train1, y_train1, epochs=2, batch_size=32)
#fit函数,把训练集的 x和y传入之后,epoch训练的轮数:表示把整个数据训练多少次,batch_size 每批处理32个。
## 5.测试模型
print('\n start testing:')
loss,accuracy = model.evaluate(X_test,y_test)
t1 = time()
t2 = t1- t0
print("一轮用时:%.2fs"%(t2))
print('test loss:',loss,'test accuracy:',accuracy)

你可能感兴趣的:(python,keras,神经网络)