python3 26.keras使用不同优化器进行MNIST数据集简单分类 学习笔记

前言

     计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gitbub地址:https://github.com/mcyJacky/DeepLearning-CV,如有问题,欢迎指出。

一、使用不同优化器进行训练

     本篇对MNIST进行分类,除了使用与之前不同的优化器外,其余内容都相同或类似。我们通常用的优化器如下:

  • from keras.optimizers import SGD
  • from keras.optimizers import Adam
  • from keras.optimizers import Adadelta
  • from keras.optimizers import RMSprop

     我们常用Adam优化器进行训练,下面就是具体Adam的优化器进行MNIST数据集分类:

import numpy as np
from keras.datasets import mnist
# keras提供的numpy工具包
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD, Adam # 优化器

# 载入数据
(x_train,y_train), (x_test,y_test) = mnist.load_data()

# (6000,28,28)
print('x_shape:', x_train.shape)
# (6000)
print('y_shape:', y_train.shape)

# 进行数据转换,并归一化
# (60000,28,28) -> (60000, 784)
x_train = x_train.reshape(x_train.shape[0], -1)/255.0
x_test = x_test.reshape(x_test.shape[0], -1)/255.0
# 换one hot格式
y_train = np_utils.to_categorical(y_train, num_classes=10)
y_test = np_utils.to_categorical(y_test, num_classes=10)

# 创建模型:输入784个神经元,输出10个神经元 784-10
model = Sequential([
        Dense(units=10, input_dim=784, bias_initializer='one', activation='softmax')
    ])

# 定义优化
# sgd = SGD(lr=0.2)
adam = Adam(lr=0.001)

# 定义优化器,loss function, 训练过程中的准确率
model.compile(
    optimizer = adam,
    loss = 'categorical_crossentropy',
    metrics = ['accuracy']
)

# 进行模型训练
model.fit(x_train, y_train, batch_size=32, epochs=10)


# 评估模型
loss, accuracy = model.evaluate(x_test, y_test)

print('\ntest loss:', loss)
print('accuracy:', accuracy)
# 输出结果:
# x_shape: (60000, 28, 28)
# y_shape: (60000,)
# Epoch 1/10
# 60000/60000 [==============================] - 4s 62us/step - loss: 0.4662 - acc: 0.8790
# Epoch 2/10
# 60000/60000 [==============================] - 3s 56us/step - loss: 0.3035 - acc: 0.9153
# Epoch 3/10
# 60000/60000 [==============================] - 3s 55us/step - loss: 0.2828 - acc: 0.9205
# Epoch 4/10
# 60000/60000 [==============================] - 3s 57us/step - loss: 0.2727 - acc: 0.9232
# Epoch 5/10
# 60000/60000 [==============================] - 3s 56us/step - loss: 0.2664 - acc: 0.9261
# Epoch 6/10
# 60000/60000 [==============================] - 4s 60us/step - loss: 0.2619 - acc: 0.9266
# Epoch 7/10
# 60000/60000 [==============================] - 3s 56us/step - loss: 0.2578 - acc: 0.9281
# Epoch 8/10
# 60000/60000 [==============================] - 3s 56us/step - loss: 0.2553 - acc: 0.9296
# Epoch 9/10
# 60000/60000 [==============================] - 3s 56us/step - loss: 0.2524 - acc: 0.9305
# Epoch 10/10
# 60000/60000 [==============================] - 3s 56us/step - loss: 0.2509 - acc: 0.9306
# 10000/10000 [==============================] - 0s 28us/step

# test loss: 0.2652167726397514
# accuracy: 0.9269

     本例只是简单展示使用Adam优化器的用法,在实际项目中使用不同的优化器会达到不一样的效果。

     
     
     
     
【参考】:
     1. 城市数据团课程《AI工程师》计算机视觉方向
     2. deeplearning.ai 吴恩达《深度学习工程师》
     3. 《机器学习》作者:周志华
     4. 《深度学习》作者:Ian Goodfellow


转载声明:
版权声明:非商用自由转载-保持署名-注明出处
署名 :mcyJacky
文章出处:https://blog.csdn.net/mcyJacky

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值