TensorFlow 入门 (基于Keras) 手写数字识别 保存 导入


前言
提示:第一次写博客 记录学习过程 如有不对地方希望能指出:

|@Auth | HeisitHe|
|@IDE  | PyCharm  |
| @Motto|  (Always Be Coding) |
|@Function|作用见文件名|
版本
python 3.9.12
TensorFlow-Gpu 2.9.0
Keras 2.9.0
GPU RTX2060
CUDA 11.6
cudnn 8.3.3.40

提示:以下是本篇文章正文内容,下面案例可供参考

🙍‍♂️一、Keras是什么?

Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。Keras在代码结构上由面向对象方法编写,完全模块化并具有可扩展性。

#二、搭建步骤

🙅‍♂️1.引入库

代码如下:

from keras.models import Sequential     #构建序列化模型  搭建神经网络模型骨架
from keras.layers import Conv2D, MaxPool2D ,Dense, Flatten ,Dropout    #使用 Conv2D 进行2d卷积运算  , MaxPoll2D 用于池化层 运算取最大值
#Dense 分类器使用  Flatten用于多维数据压缩 过渡为全连接层  Dropout 放在全连接层后面 防止过拟合 提升模型泛化能力
from keras.utils import np_utils    # 独热编码 将类别向量转化为 0,1矩阵 减小计算量 加速收敛
import tensorflow as tf
from keras.datasets import mnist     #导入手写数字级 第一次导入需下载
import matplotlib.pyplot as plt     #经典绘图库
from keras.utils.vis_utils import plot_model   #绘制 神经模型

进入正题

🙆‍♀️2.读入数据

代码如下:

(x_train,y_train),(x_test,y_test)=mnist.load_data() //导入数据 mnist 库 包含 60000张 手写数字 训练集 10000 张测试集


返回值是一个元组

🙆‍♂️ 3.数据处理

img = 28
#验证集  10000
x_val=x_train[50000:]
y_val=y_train[50000:]
#训练集  50000
x_train=x_train[:50000]
y_train=y_train[:50000]

x_train = x_train.reshape(x_train.shape[0], img, img, 1).astype('float32')    #将图像转换为4维矩阵 放入训练 
#将数据类型由 Uint 8 转为 float32 提高精确率
x_val =x_val.reshape((x_val.shape[0], img, img, 1)).astype('float32')
x_test = x_test.reshape(x_test.shape[0], img, img, 1).astype('float32')
# 原始图像数据的像素灰度值范围是 0-255  像数值比例缩小
x_train /= 255
x_test /= 255
#独热化 将三维维矩阵 值 转化为 0,1  10个类别
y_train = np_utils.to_categorical(y_train, 10)  
y_test =np_utils.to_categorical(y_test, 10)
y_val = np_utils.to_categorical(y_val,10)


💁‍♀️4. 构建神经 模型

采用序列模型 Sequential() 搭建模型骨架 本节搭建了两个卷积层 两个池化层 两个全连接层 分类输出
用 softmax 做 0-9 的 10 分类

in_channels=in_channel 输入通道数,即输入数据的通道数
out_channels=10 输出通道数,即输出数据的通道数
kernel_size 卷积核大小,一般是int,也可tuple,如3【表示3x3】;(5,4)【表示5x4】
stride=1 卷积移动的步长
padding=padding 是否用0 填充数据四周

model=Sequential()
//                
model.add(Conv2D(filters=30, kernel_size=(5, 5), activation='relu', input_shape=(28, 28, 1)))      
model.add(MaxPool2D
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值