当前位置: 首页 > news >正文

神经网络模型---AlexNet

一、AlexNet

1.导入tensorflow库,这里给简称为tf库

import tensorflow as tf
from tensorflow.keras import datasets, layers, models

datasets:是用于训练和测试机器学习模型的数据集合
layers:是构建神经网络模型的关键组成部分
models:是构建的神经网络架构;用于从数据中学习特征并进行预测

2.加载Fashion-MNIST数据集

(train_images, train_labels), (test_images, test_labels) = datasets.fashion_mnist.load_data()

load_data是一个方法,用来加载数据集
train_images:一个数组,包含了灰度图像,用于训练模型
train_labels: 包含图像数量的整数值,范围从0到9,每个值对应于train_images中相应图像的类别标签
test_images和test_labels与上述说明一致

3.归一化,将像素值范围在[0,1]之间

train_images = train_images / 255.0
test_images =  test_images / 255.0

4.数据集的图像是灰度图像,需增加一个颜色通道

train_images = tf.expand_dims(train_images, axis=-1)
test_images = tf.expand_dims(test_images, axis=-1)

train_images的原始形状:(60000,28,28);60000是训练样本的数量
expand_dims用于增加一个新的维度。
axis=-1指定增加新的维度位置。-1表示最后一个轴,即(60000,28,28,1)
test_images同理

5.将标签从整数形式转换为独热编码形式

train_labels = tf.one_hot(train_labels, depth=10)
test_labels = tf.one_hot(test_labels, depth=10)

独热编码是一种将分类数据表示为二进制向量的方法,每个类别对应一个唯一的二进制向量,向量中只有一个元素是1,其余都是0
tf.one_hot()函数将其转换为形状为(60000, 10)的二维数组
test_labels同理

6.创建AlexNet模型

model = models.Sequential([

6.1添加卷积层,该层有32个3x3的卷积核,激活函数为relu,并且指定了输入形状为28x28像素的单通道图像

layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),

6.2添加一个2x2的最大池化层

layers.MaxPooling2D((2, 2)),

6.3添加第二个卷积层

layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(128, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),

6.4将池化层的输出展平为1个一维向量

layers.Flatten(),

6.5添加一个全连接层,该层有128个神经元

layers.Dense(128, activation=‘relu’),

6.6全连接层,有10个神经元,对应数据集的10个类别,激活函数:softmax输出每个类别的概率分布

    layers.Dense(10, activation='softmax')
])

7.编译模型

model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])

参数1:使用了Adam优化器,结合了动量和自适应学习率的优点
参数2:此处使用的损失函数 是一种多分类问题的交叉熵损失函数
参数3:指定在训练过程中要计算的评估指标:这里计算了准确率这个指标

8.训练模型

model.fit(train_images,train_labels,epochs=10,batch_size=64,validation_data=(test_images,test_labels))

model.fit函数作用:执行模型的训练过程
参数1:训练集的图像数据,它是一个四维张量
参数2:训练集的标签数据,它是一个二维张量
参数3:训练过程将进行的完整循环次数
参数4:每次梯度更新时使用的样本数量
参数5:用于验证的测试数据集,可评估性能,避免过拟合

结果:
在这里插入图片描述

9.保存模型

model.save('AlexNet.h5')

结果:
在这里插入图片描述

http://www.lryc.cn/news/375772.html

相关文章:

  • corona渲染器与vray比哪个好?支持云渲染平台吗
  • 每日一练:攻防世界:Ditf
  • 约瑟夫环递归算法详解与实现
  • 互联网应用主流框架整合之构建REST风格的系统
  • vue3-自定义指令来实现input框输入限制
  • MySQL日志——redolog
  • Python热涨落流体力学求解算法和英伟达人工智能核评估模型
  • 【C语言】数组参数和指针参数详解
  • Tuple 元组
  • (资料收藏)王阳明传《知行合一》共74讲,王阳明知行合一音频讲解资料
  • 空气质量预报模式系统WRF-CMAQ
  • Collections.sort()方法总结
  • Java23种设计模式(二)
  • Web前端收入来源:探索多元化的盈利渠道
  • 抽象工厂模式(大话设计模式)C/C++版本
  • springboot宠物医院信息管理系统-计算机毕业设计源码04164
  • Leetcode Hot100之哈希表
  • Vision Transformer with Sparse Scan Prior
  • 笔记-python 中BeautifulSoup入门
  • Tomcat Websocket应用实例研究
  • leetcode-11-二叉树前中后序遍历以及层次遍历
  • Python基础学习笔记(十一)——集合
  • FineReport
  • 嵌入式就业前景好么
  • 为啥找对象千万别找大厂男,还好我不是大厂的。。
  • 如何查看k8s中service的负载均衡策略
  • Linux-DNS域名解析服务01
  • [c++刷题]贪心算法.N01
  • 推荐常用的三款源代码防泄密软件
  • Android 13 高通设备热点低功耗模式(2)