文章目录
前言
提示:第一次写博客 记录学习过程 如有不对地方希望能指出:
|@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