例子---mnist

# -*- coding:utf-8 -*-

'''
mnist手写体识别
采用卷积-池化-卷积-池化-全连接-dropout-全连接
优化器:用rmsprop优化器进行梯度下降
误差:交叉熵
'''

import numpy as np
from keras.datasets import mnist
# to_categorical将类别向量转换为二进制(只有0和1)的矩阵类型
from keras.utils import to_categorical
from keras import models
from keras import layers

'---加载数据---'
data = np.load('mnist.npz')
train_images, train_labels = data['x_train'], data['y_train']
test_images, test_labels = data['x_test'], data['y_test']
'将标签转化'
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
'---数据预处理---'
'训练集'
# 改形状
train_images = train_images.reshape((60000, 28*28))
# 改数据类型,把值除255以缩放至[0,255]
train_images = train_images.astype('float32')/255
'测试集'
test_images = test_images.reshape((10000, 28*28))
test_images = test_images.astype('float32')/255

'---载入模型---'
import os
if(os.path.exists('my_model.h5')):
    network = models.load_model('my_model.h5')
    print('已载入网络')
else:
    print('开始架构网络')
    '---架构网络---'
    network = models.Sequential()

    '全连接层'
    network.add(layers.Dense(512, activation='relu', input_shape=(28*28, )))

    '全连接层,属于十个数(类别)的概率'
    network.add(layers.Dense(10, activation='softmax', input_shape=(28*28, )))

'优化器、损失函数、精度'
network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

'训练5次,训练集的精度98.8%'
history = network.fit(train_images, train_labels, epochs=1, batch_size=128)
history_dict = history.history
print(history_dict.keys())

'---测试---'
test_loss , test_acc = network.evaluate(test_images, test_labels)
'测试集的精度97.9%,过拟合造成'
print('test_acc:', test_acc)

'---保存模型---'
# 保存参数,载入参数
network.save('my_model.h5')

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值