深度学习基础——使用keras全连接实现mnist

概述
一,数据集介绍:
Mnist数据集分为两部分,分别含有60000张训练图片和10000张测试图片,图片内容就是0-9的数字。
每一张图片包含28*28个像素。
注:对于mnist数据集在kerasdatasets里面存在直接导入即可,第一次可能需要下载有点慢。
二,使用全连接层实现mnist数据集的分类
1.导入需要的模块

# 常用的科学计算库
import numpy as np
# 导入我们所用到的mnist数据集
from keras.datasets import mnist
# 导入所用到的序贯模型
from keras.models import Sequential
# 导入用到的全连接层和激活函数层
from keras.layers import Dense, Activation
# 使用优化器RMSprop
from keras.optimizers import RMSprop
# 把标签向量化
from keras.utils import np_utils

2.导入数据和数据预处理
对于深度学习网络的过程就是数据获取,数据处理,模型创建与训练,模型测试与评估,模型预测,所以先要对数据做些必要的预处理,像归一化,滤波之类的。

# x shape(60000, 28*28) y shape(10000, )
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 数据预处理
X_train = x_train.reshape(x_train.shape[0], -1) / 255  # normalize
X_test = x_test.reshape(x_test.shape[0], -1) / 255     # normalize

# 将类向量转化为类矩阵  数字 5 转换为 0 0 0 0 0 1 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)

to_categorical就是将类别向量转换为二进制(只有0和1)的矩阵类型表示。对于多分类的任务来说是很好的,在神经网络数据矩阵向量居多。
3.神经网络的搭建,
使用keras中的一个Sequential模型,可以大致理解为"层堆叠"。一般在以后的卷积残差的一些网络中我们会使用更加灵活的函数式,
我们先实例化一个Sequential:

# 搭建神经网络模型
model = Sequential()
# 第一层Dense层 输入dim为28*28
model.add(Dense(80, input_dim=784))
# 添加激活函数tanh
model.add(Activation('tanh'))
# 第二层100个单元 激活函数为relu
model.add(Dense(100, activation='relu'))
# 输出层 10个单元 激活函数为softmax
model.add(Dense(10, activation='softmax'))

对于神经网络的搭建使用上述方法即可简单易理解对于激活函数一般分类任务的输出层使用softmax

4.确定优化器并且激活神经网络

sgd = SGD(lr=0.001) #学习率lr
# 激活神经网络
model.compile(
        optimizer = sgd,                 # 加速神经网络
        loss = 'categorical_crossentropy',   # 损失函数
        metrics = ['accuracy'],               # 计算误差或准确率
        )

5.训练和评估模型

# 使用训练集 并且训练10轮 batch_size为32 
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 使用测试集评估模型
loss, acc = model.evaluate(X_test, y_test)
# 可以查看网络评估结果
print('loss = ', loss)
print('acc = ', acc)

对于使用keras搭建一个简单的全连接网络来分类mnist数据集大概就这样的步骤,对于这种全连接的正确率,不会很高,对于深层的全连接也不会有很好的效果,对于图像一般采用的是卷积神经网络。
注:深度学习小白,如有错误,希望提出…

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值