MNIST机器学习入门(学习记录)——2

import tensorflow as tf
import matplotlib.pyplot as plt

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
print("y_train[0]:", y_train[0])
plt.figure()
plt.imshow(x_train[0])
plt.show()
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),  # 扁平化
    tf.keras.layers.Dense(128, activation='relu'),  # 全连接层
    tf.keras.layers.Dropout(0.2),  # 隐藏层失效率
    tf.keras.layers.Dense(10, activation='softmax')  # 全连接层
])
"""sparse_categorical_crossentropy:稀疏绝对交叉熵"""
model.compile(optimizer='adam',  # 优化方法
              loss='sparse_categorical_crossentropy',  # 将数字编码转化成one-hot编码格式,然后对one-hot编码格式的数据(真实标签值)与预测出的标签值使用交叉熵损失函数。
              metrics=['accuracy'])  # 度量
model.fit(x_train, y_train, epochs=5)
"""
verbose:该参数的值控制日志显示的方式
verbose = 0    不在标准输出流输出日志信息
verbose = 1    输出进度条记录
verbose = 2    每个epoch输出一行记录
"""
model.evaluate(x_test, y_test, verbose=2)

Adam 优化算法(Adam optimization)
吴恩达深度学习笔记(45)-Adam 优化算法(Adam optimization)
从 SGD 到 Adam —— 深度学习优化算法概览(一)
为什么要修正
问题记录
由于谷歌无法登陆,下载minist的网址无响应,将minist.py中的origin_folder 网址修改为
origin_folder = ‘https://s3.amazonaws.com/img-datasets/’
https://s3.amazonaws.com/img-datasets/mnist.npz

from __future__ import absolute_import, division, print_function
from tensorflow.keras import *
import numpy as np
import matplotlib.pyplot as plt

path = "E:/下载/mnist.npz"
with np.load(path, allow_pickle=True) as f:
    x_train, y_train = f['x_train'], f['y_train']
    x_test, y_test = f['x_test'], f['y_test']
x_train, x_test = x_train / 255.0, x_test / 255.0
x_train = np.expand_dims(x_train, axis=3)
x_test = np.expand_dims(x_test, axis=3)

network = Sequential([  # 网络容器
    layers.Conv2D(6, kernel_size=3, strides=1),  # 第一个卷积层, 6 个 3x3 卷积核
    layers.MaxPooling2D(pool_size=2, strides=2),  # 高宽各减半的池化层
    layers.ReLU(),  # 激活函数
    layers.Conv2D(16, kernel_size=3, strides=1),  # 第二个卷积层, 16 个 3x3 卷积核
    layers.MaxPooling2D(pool_size=2, strides=2),  # 高宽各减半的池化层
    layers.ReLU(),  # 激活函数
    layers.Flatten(),  # 打平层,方便全连接层处理
    layers.Dense(120, activation='relu'),  # 全连接层,120 个节点
    layers.Dense(84, activation='relu'),  # 全连接层,84 节点
    layers.Dense(10, activation='softmax')  # 全连接层,10 个节点
])
network.build(input_shape=(4, 28, 28, 1))
network.compile(optimizer='adam',  # 优化方法
                loss='sparse_categorical_crossentropy',
                # 将数字编码转化成one-hot编码格式,然后对one-hot编码格式的数据(真实标签值)与预测出的标签值使用交叉熵损失函数。
                metrics=['accuracy'])  # 度量
network.fit(x_train, y_train, epochs=7)
"""
verbose:该参数的值控制日志显示的方式
verbose = 0    不在标准输出流输出日志信息
verbose = 1    输出进度条记录
verbose = 2    每个epoch输出一行记录
"""
# 保存模型的文件名
filename = "cnn_model.h5"
# 保存模型
network.save("E:\PycharmProjects\Ice coating prediction software v2.0\\" + filename)
# 调用模型
model = models.load_model("E:\PycharmProjects\Ice coating prediction software v2.0\\" + filename)
model.evaluate(x_test, y_test, verbose=2)
result = model.predict(x_test)

for i in range(10):
    print("Model prediction: %i" % np.argmax(result[i]))
    plt.imshow(np.reshape(x_test[i], [28, 28]), cmap='gray')
    plt.show()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值