美文网首页Python
Python深度学习2

Python深度学习2

作者: 西萌XXX | 来源:发表于2021-03-03 14:35 被阅读0次

使用keras搭建CNN深度学习网络,使用mnist数据集。

一、导入所需要的包

##导入所需要的包
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Convolution2D, MaxPooling2D, Flatten
from keras.optimizers import Adam

二、载入数据集

mnist.load载入数据集,并且将x_train,x_test进行形状处理, y_train,y_test进行独热编码处理。

(x_train, y_train), (x_test, y_test) = mnist.load_data()
##将x_train,x_test(60000,28,28)转为(60000,28,28,1), 固定行28,28,28*28=784 
# reshape中的-1代表会转为不确定     /255数据归一化
x_train = x_train.reshape(-1, 28, 28, 1)/255.0
x_test = x_test.reshape(-1, 28, 28, 1)/255.0

##y_train 独热标签 举例 数字5 会转为[0,0,0,0,1,0,0,0,0,0]
y_train = np_utils.to_categorical(y_train, num_classes =10)
y_test = np_utils.to_categorical(y_test, num_classes =10)

三、开始建模

model = Sequential()
##第一个卷积层
##input_shap 输入平面
##filters 卷积核/滤波器
#kernel_size 卷积窗口大小
##strides  步长
## padding_方式 same/valid
## activation 激活函数
model.add(Convolution2D(
        input_shape = (28,28,1),
        filters = 32,
        kernel_size = 5,
        strides = 1,
        padding = 'same',
        activation = 'relu'
        ))
##第一个池化层
model.add(MaxPooling2D(
        pool_size = 2,
        strides = 2,
        padding = 'same',
        ))
##第二个卷积层
model.add(Convolution2D(64, 5, strides = 1, padding = 'same', activation = 'relu'))
##第二个池化层
model.add(MaxPooling2D(2,2,'same'))
#把第二个池化层的输出扁平化为1维
model.add(Flatten())
#第一个全连接层
model.add(Dense(1024, activation = 'relu'))
model.add(Dropout(0.5))
##第二个全连接层
model.add(Dense(10, activation= 'softmax'))
#优化器
adam = Adam(lr = 0.004)
model.compile(optimizer = adam, 
        loss = 'categorical_crossentropy',        ##交叉熵 模型收敛速度会快categorical_crossentropy ,mse
        metrics = ['accuracy'],     
        )

四、模型训练和评估

##训练模型
model.fit(x_train, y_train, batch_size = 64, epochs = 10)
##评估模型
loss,acc = model.evaluate(x_test, y_test)

附完整代码

from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Convolution2D, MaxPooling2D, Flatten
from keras.optimizers import Adam

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 28, 28, 1)/255.0
x_test = x_test.reshape(-1, 28, 28, 1)/255.0
y_train = np_utils.to_categorical(y_train, num_classes =10)
y_test = np_utils.to_categorical(y_test, num_classes =10)

model = Sequential()
model.add(Convolution2D(
        input_shape = (28,28,1),
        filters = 32,
        kernel_size = 5,
        strides = 1,
        padding = 'same',
        activation = 'relu'
        ))
model.add(MaxPooling2D(
        pool_size = 2,
        strides = 2,
        padding = 'same',
        ))
model.add(Convolution2D(64, 5, strides = 1, padding = 'same', activation = 'relu'))
model.add(MaxPooling2D(2,2,'same'))
model.add(Flatten())
model.add(Dense(1024, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation= 'softmax'))
adam = Adam(lr = 0.004)
model.compile(optimizer = adam, 
        loss = 'categorical_crossentropy',       
        metrics = ['accuracy'],     
        )
model.fit(x_train, y_train, batch_size = 64, epochs = 10)
loss,acc = model.evaluate(x_test, y_test)

相关文章

网友评论

    本文标题:Python深度学习2

    本文链接:https://www.haomeiwen.com/subject/tgpqqltx.html