动手学卷积神经网络
文章平均质量分 64
从头开始动手学卷积神经网络,参见:https://github.com/AccumulateMore/CV
Gosling123456
华北水利水电大学在读本科生
展开
-
15. 查看开源项目
② 如下图所示,Terminal终端运行.py文件时,--变量 后面的值是给变量进行赋值,赋值后再在.py文件中运行。例如 ./datasets/maps 是给前面的dataroot赋值,maps_cyclegan是给前面的name赋值,cycle_gan是给前面的model赋值。Terminal终端命令语句,如果不对该默认变量新写入,直接调用默认的参数;如果对该默认变量新写入,则默认的参数被新写入的参数覆盖。① 像运行Tensorboar一样,在Terminal终端,可以命令运行.py文件。原创 2023-08-27 11:47:04 · 42942 阅读 · 0 评论 -
14. 完整模型验证套路
训练次数:22200,Loss:0.42121270298957825。训练次数:10000,Loss:0.9259409308433533。训练次数:10300,Loss:0.9383634924888611。训练次数:10500,Loss:0.7797534465789795。训练次数:10600,Loss:0.9295462965965271。训练次数:10700,Loss:0.7535973787307739。训练次数:10800,Loss:0.8077783584594727。原创 2023-08-27 11:44:20 · 42979 阅读 · 0 评论 -
13. 利用GPU训练
训练次数:1300,Loss:1.6947956085205078。训练次数:1500,Loss:1.8372352123260498。训练次数:1700,Loss:1.6654351949691772。训练次数:1800,Loss:1.9246405363082886。训练次数:1900,Loss:1.7132933139801025。训练次数:2100,Loss:1.4903961420059204。训练次数:2200,Loss:1.4754142761230469。原创 2023-08-27 11:39:29 · 43057 阅读 · 0 评论 -
12. 完整模型训练套路
对于Dropout,model.eval()是利用到了所有网络连接,即不进行随机舍弃神经元。② tensor的requires_grad的属性默认为False,若一个节点(叶子变量:自己创建的tensor)requires_grad被设置为True,那么所有依赖它的节点requires_grad都为True(即使其他相依赖的tensor的requires_grad = False)在model(test)之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。原创 2023-08-27 11:27:35 · 43105 阅读 · 0 评论 -
11. 网络模型保存与读取
---> 2 model = torch.load("./model/tudui_method1.pth") # 无法直接加载方式一保存的网络结构。② 再运行下面的代码,即下面为第1个代码块运行,无法直接导入网络模型。① 点击 Kernel,再点击 Restart。原创 2023-08-27 11:07:41 · 43240 阅读 · 0 评论 -
10. 网络模型使用及修改
【代码】10. 网络模型使用及修改。原创 2023-08-26 16:46:21 · 44632 阅读 · 0 评论 -
9. 优化器
① 损失函数调用backward方法,就可以调用损失函数的反向传播方法,就可以求出我们需要调节的梯度,我们就可以利用我们的优化器就可以根据梯度对参数进行调整,达到整体误差降低的目的。② 梯度要清零,如果梯度不清零会导致梯度累加。原创 2023-08-26 16:40:43 · 44678 阅读 · 0 评论 -
8. 损失函数与反向传播
① 反向传播通过梯度来更新参数,使得loss损失最小,如下图所示。② Loss损失函数另一方面为我们更新输出提供一定的依据。① Loss损失函数一方面计算实际输出和目标之间的差距。① L1loss数学公式如下图所示,例子如下下图所示。① MSE损失函数数学公式如下图所示。① 交叉熵损失函数数学公式如下图所示。原创 2023-08-26 16:34:29 · 44935 阅读 · 0 评论 -
7. 搭建网络
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。① 把网络结构放在Sequential里面,好处就是代码写起来比较简介、易懂。② 可以根据神经网络每层的尺寸,根据下图的公式计算出神经网络中的参数。原创 2023-08-26 16:19:13 · 44007 阅读 · 0 评论 -
6. 激活层
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。① inplace为原地替换,若为True,则变量的值被替换。若为False,则会创建一个新变量,将函数处理后的值赋值给新变量,原始变量的值没有修改。6.2 tensorboard显示。原创 2023-08-26 16:10:10 · 45102 阅读 · 0 评论 -
5. 线性层及其他层
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。原创 2023-08-26 16:05:16 · 44370 阅读 · 0 评论 -
4. 池化层相关概念
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。④ 池化使得数据由5 * 5 变为3 * 3,甚至1 * 1的,这样导致计算的参数会大大减小。例如1080P的电影经过池化的转为720P的电影、或360P的电影后,同样的网速下,视频更为不卡。③ Ceil_model为当超出区域时,只取最左上角的值。原创 2023-08-26 15:56:30 · 45672 阅读 · 0 评论 -
3.卷积层相关概念
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。② kernel_size在训练过程中不断调整,定义为3就是3 * 3的卷积核,实际我们在训练神经网络过程中其实就是对kernel_size不断调整。① Conv1d代表一维卷积,Conv2d代表二维卷积,Conv3d代表三维卷积。原创 2023-08-26 15:50:43 · 44605 阅读 · 0 评论 -
2. 步幅、填充原理
例子4:一个特征图尺寸为6 * 6的输入, 使用3 * 3的卷积核,步幅=2,填充=1,输出的尺寸=(6 + 2 * 1 - 3)/2 + 1 = 2.5 + 1 = 3.5 向下取整=3(降采样:边长减少1/2)。例子2: 一个特征图尺寸为5 * 5的输入,使用3 * 3的卷积核,步幅=1,填充=1,输出的尺寸=(5 + 2 * 1 - 3)/1 + 1 = 5。例子1:一个特征图尺寸为4 * 4的输入,使用3 * 3的卷积核,步幅=1,填充=0,输出的尺寸=(4 - 3)/1 + 1 = 2。原创 2023-08-26 15:41:18 · 44123 阅读 · 0 评论 -
1. 卷积原理
② 下图为每次滑动移动1格,然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据,如下图右所示。① 卷积核不停的在原图上进行滑动,对应元素相乘再相加。原创 2023-08-26 15:34:37 · 45131 阅读 · 0 评论