| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> CNN-运动鞋品牌识别 -> 正文阅读 |
|
[人工智能]CNN-运动鞋品牌识别 |
一、前期工作1. 设置GPU?
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] 2. 导入并查看数据
图片总数为: 578
? ? 二、数据预处理1. 加载数据使用image_dataset_from_directory方法将磁盘中的数据加载到tf.data.Dataset中 测试集与验证集的关系:
Found 502 files belonging to 2 classes.
Found 76 files belonging to 2 classes. 我们可以通过class_names输出数据集的标签。标签将按字母顺序对应于目录名称。?
['adidas', 'nike'] ? 2. 可视化数据
? ? 3. 再次检查数据
(32, 224, 224, 3) (32,) ? 4. 配置数据集
? ?使用 ?
? 三、构建CNN网络卷积神经网络(CNN)的输入是张量 (Tensor) 形式的 (image_height, image_width, color_channels),包含了图像高度、宽度及颜色信息。不需要输入batch size。color_channels 为 (R,G,B) 分别对应 RGB 的三个颜色通道(color channel)。在此示例中,我们的 CNN 输入的形状是 (224, 224, 3)即彩色图像。我们需要在声明第一层时将形状赋值给参数input_shape。
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= rescaling (Rescaling) (None, 224, 224, 3) 0 _________________________________________________________________ conv2d (Conv2D) (None, 222, 222, 16) 448 _________________________________________________________________ average_pooling2d (AveragePo (None, 111, 111, 16) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 109, 109, 32) 4640 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 54, 54, 32) 0 _________________________________________________________________ dropout (Dropout) (None, 54, 54, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 52, 52, 64) 18496 _________________________________________________________________ dropout_1 (Dropout) (None, 52, 52, 64) 0 _________________________________________________________________ flatten (Flatten) (None, 173056) 0 _________________________________________________________________ dense (Dense) (None, 128) 22151296 _________________________________________________________________ dense_1 (Dense) (None, 2) 258 ================================================================= Total params: 22,175,138 Trainable params: 22,175,138 Non-trainable params: 0 _________________________________________________________________ 四、训练模型在准备对模型进行训练之前,还需要再对其进行一些设置。以下内容是在模型的编译步骤中添加的:
1. 设置动态学习率
学习率大与学习率小的优缺点分析: 学习率大 ● 优点: ○ 1、加快学习速率。 ○ 2、有助于跳出局部最优值。 ● 缺点: ○ 1、导致模型训练不收敛。 ○ 2、单单使用大学习率容易导致模型不精确。 学习率小 ● 优点: ○ 1、有助于模型收敛、模型细化。 ○ 2、提高模型精度。 ● 缺点: ○ 1、很难跳出局部最优值。 ○ 2、收敛缓慢。 注意:这里设置的动态学习率为:指数衰减型(ExponentialDecay)。在每一个epoch开始前,学习率(learning_rate)都将会重置为初始学习率(initial_learning_rate),然后再重新开始衰减。计算公式如下: learning_rate = initial_learning_rate * decay_rate ^ (step / decay_steps) 2. 早停与保存最佳模型参数EarlyStopping()参数说明:
? 3.? 模型训练
Epoch 00057: val_accuracy did not improve from 0.88158 Epoch 00057: early stopping 效果最好的一次,epoch走完了60次,val_accuracy为0.92,感觉选择一平均一最大池化比两平均效果好些。 五、模型评估1. Loss与Accuracy图
?
预测结果为: nike 一些收获与学习笔记:1、对于卷积与池化池化时,如果更注重整体、背景,可以选择平均池化,但会使得图片“模糊”;如果更注重纹理、线条边缘,可以选择最大池化,如本次运动鞋识别,最大池化效果好些。 一般而言,卷积层越多性能越好,但容易过拟合,池化层越多能回会降低模型预测的精准度。 即大的方向上,欠拟合加卷积,过拟合加池化。 ? 2、对于学习率?并非学得越精细越好,有时可能会陷入"极大值"区域而非"最大值"。 学习率大 ????????● 优点: ○ 1、加快学习速率。 ○ 2、有助于跳出局部最优值。 ● 缺点: ○ 1、导致模型训练不收敛。 ○ 2、单单使用大学习率容易导致模型不精确。 学习率小 ????????● 优点: ○ 1、有助于模型收敛、模型细化。 ○ 2、提高模型精度。 ● 缺点: ○ 1、很难跳出局部最优值。 ○ 2、收敛缓慢。 ? 3、batch_size?Batch_size的作用:决定了下降的方向。 在神经网络训练时,如果数据集足够小,可将数据一次性全部喂给神经网络 但我们常常面临的是比较大的数据集,一次性喂给神经网络时,往往会出现内存/显存不足的现象。 此时,我们会把比较大的数据集,分批次喂给神经网络。
在合理范围内,增大Batch_size的好处:
? 一些经验之谈: 一般而言,根据GPU显存,设置为最大,而且一般要求是8的倍数(比如16,32,64),GPU内部的并行计算效率最高。
batch_size设的大一些,收敛得快,也就是需要训练的次数少,准确率上升的也很稳定,但是实际使用起来精度不高; ? 4、输入图片的大小输入网络的图片大小要根据网络结构来确定。 主要看pool这个操作执行了几次,比如pool是2*2的,那么一次pool图像就缩小了一半。本实验执行了3次,就是2^3,那输入图片的尺寸就必须是2的3次方,8的倍数。 输入图片大小变小之后,batchsize可以调大一些。在不超内存的情况下,batch越大越好 ? 5、others
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 18:43:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |