Table of Contents
#custom-toc-container
Deep Learning
## 图像 ### 图像的形状格式 h: height w: width c: channel PIL类型的顺序是(h, w, c) tensorflow,numpy的顺序是(batch, h, w, c)或(h, w, c) pytorch的顺序是(batch, c, h, w)或(c, h, w) ### 图像格式 1. PIL(Python Imaging Library)库,from PIL import Image。 Image.open()返回的是一个**PIL.JpegImagePlugin.JpegImageFile**或**PIL.PngImagePlugin.PngImageFile**等格式的对象,取决于所打开图像的文件类型。 2. 在PNG图像中,像素值可以被编码为灰度值、RGB值或RGBA值。 3. 如果图片是png格式,Image.open()将其解析为`RGBA格式`。 4. 而在RGBA格式中,每个像素的红、绿、蓝三个通道的值都是255,透明度通道的值是0,这就导致了所有像素的值都是255;这个问题可能会导致你`无法正确`地使用图像数据进行训练或者其他处理。 5. 需要将RGBA转换为RGB: ```python from PIL import Image imagePath = "E:\\a.png" img = Image.open(imagePath).convert('RGB') ``` ### 图像对训练和预测效果的影响 * 图像的清晰度:训练图像清晰度低,预测图像清晰度高,很可能会导致,预测效果不好。 * 图像数量(数据集大小):要想训练的模型适应尽可能多的工业情况,需要用尽可能多和特征丰富的数据集进行训练。 ## 标准化&归一化处理 图像要经过`标准化`或`归一化`后,再放进网络之中。 可以有效防止梯度爆炸。 ## 数据增强 数据增强,也叫数据增广。 ## 训练网络时为什么会出现loss逐渐增大的情况 训练网络时为什么会出现`损失`逐渐增大的情况? 常见原因有:1.学习率过高、2.数据问题、3.网络结构问题、4.初始化问题、5.正则化过强、6.其他外部因素。 |原因|说明| |:---:|:---:| | 学习率过高 | 学习率是梯度下降中的一个重要参数。如果学习率设置得过高,可能会导致损失函数在优化过程中”跳过”优异点,从而造成损失函数不断震荡并逐渐增大。| | 数据问题 | 数据中的噪声、异常值或不均匀的分布可能会导致模型的损失函数上升。此外,如果训练数据和验证数据分布不一致,也可能导致损失逐渐增大。| | 网络结构问题 | 模型过于复杂或过于简单都可能导致损失增大。过复杂的模型可能会过拟合,而过于简单的模型可能不能捕获数据中的复杂关系。| | 初始化问题 | 不合适的权重和偏置初始化可能导致训练过程中损失函数快速增大。例如,将所有权重初始化为0可能会导致梯度消失问题。| | 正则化过强 | 正则化是一种防止过拟合的技术,但如果正则化强度过大,可能会抑制模型的能力,导致损失增大。| | 其他外部因素 | 例如,硬件问题、数据读取错误或其他外部干扰都可能影响训练过程,导致损失函数的异常变化。| ## 梯度消失&梯度爆炸 数值过小,可能导致梯度消失。 数值过大,可能导致梯度爆炸,模型无法从训练数据中获得更新,`损失`增大(出现显著变化)甚至变为NaN。
文章目录
内存
会分配新内存的操作
节省内存的操作