- 博客(83)
- 收藏
- 关注
原创 利用GPU进行训练
如果电脑上没有GPU的话,以上这么写会发生报错,更好的写法应该是加上if判断是否有GPU。如果电脑上有两个不同的gpu,可以用以下调用第二个gpu进行训练。这样可以保证有gpu先试用gpu,没有gpu也能够正常运行。除了以上的三种,在别的地方是引用不上cuda的。可以看到没训练100次花费时间是7s。可以看到平均100次只使用1s。‘:0’的写法等同于cuda。使用方式是.cuda()
2024-10-05 20:00:00 256
原创 模型的深度优化
total_accuracy/test_data_size 表示计算出的测试集上的准确率(总正确预测数 / 测试集数据总量)total_test_step 表示当前测试步骤,用作 X 轴上的标记,表明该数据是在第几次测试时记录的。可以看到确实有整体数据集的信息,但是被很多乱七八遭的信息给掩盖了,所以可以改善一下代码。哪怕我们已经得到整体测试数据集上的Loss,也不能很好的说明数据集实际上的表现效果。可以直观的看到训练的模型的loss损失函数在不断的下降。可以看到计算处理整体数据集上的正确率,为32%
2024-10-03 20:00:00 811
原创 完整网络模型训练(一)
torch.ones 函数用于生成一个全 1 的张量,这里的张量形状适合用于输入图像分类或卷积神经网络(CNN)中常见的 CIFAR-10 或类似的 32x32 像素图像数据。这一行代码的含义是:创建一个大小为 (64, 3, 32, 32) 的全 1 张量,数据类型为 torch.float32。learning_rate = 1e-2 这里的1e-2代表的是:1 x (10)^(-2) = 1/100 = 0.01。32, 32:这是图片的高和宽,表示每张图片的尺寸为 32x32 像素。
2024-09-30 20:00:00 1377 1
原创 网络模型的保存与读取
原因是在 PyTorch 的 torchvision 库中,从版本 0.13 开始,pretrained 参数已经被弃用,取而代之的是 weights 参数。方式1保存的是模型的结构+模型的参数,方式2保存的只是模型的参数(官方推荐的保存方式)该方式1保存的网路模型不仅保存了网络模型的一种结构,它也保存了模型当中的一些参数。或者也可以用import的方法加载自己写的网络模型,那么就不需要老是复制粘贴。官方推荐的原因是当保存一个大的模型时候,方式2所用的空间更小。能够发现两者都是一样的,说明被完整加载出来。
2024-09-20 20:00:00 898
原创 优化器与现有网络模型的修改
损失函数衡量的是模型预测值与真实值之间的差异,而优化器则负责通过更新模型的权重(Weights)和偏置(Biases)来减少这种差异。方法:像上面得到的是out_features=1000,我们可以进行一个新的处理,通过Linear将输入是1000,而输出为10,从而达到降类的效果。,这代码表示只是加载网络模型(也就是像之前的网络模型那样,只是加载模型,含有卷积,池化等,其中的参数都是默认的),所以它不需要下载。可以看到,通过优化器的一轮轮优化,整体的loss值会一直降低,从而达到数据优化的效果。
2024-09-19 20:02:49 682
原创 损失函数和反向传播
假设代码预测图中是狗,计算得到第0号person为0.1,第1号dog为0.2,第2号cat为0.3,那么电脑预测是猫的概率更大,也就是说误差损失大。交叉熵是专门用来解决多分类问题的,当-log(x)中的x取值范围是0-1,那么当x越大,损失也就越小,也就是命中概率大,损失小。这里的-0.0478, 0.0761 等等的就是预测概率,跟上面的0.1, 0.2,0.3一样。最后的 3 表示数据点的数量,这里是三个元素【1 , 2,3】。其中,x 是模型的输出,y 是真实值,n 是样本数量。
2024-09-14 20:00:00 1268
原创 Sequential的使用和搭建实战
Sequential是按顺序构建网络:所有的层都按添加的顺序连接,因此可以很容易地构建具有线性堆叠结构的网络模型。由CIFAR 10 model结构图可以得知Output需要32,从而通过下面的式子计算出padding和stride的参数,这里默认dilations空洞卷积参数为1,若把stride设置成1,那么求得padding的值为2,从而得到上面的参数。可以看到也不会发生报错,这样子我们无法识别搭建的网络是否出现错误,这时候我们可以通过一个假想输入来进行判断。,表示代码错误的情况。
2024-09-13 20:43:54 555
原创 神经网络的非线性激活
神经网络的非线性激活函数的主要作用是引入非线性变换,从而使网络能够学习和逼近复杂的函数关系。在神经网络中,线性变换(如矩阵乘法)能够将输入数据映射到不同的空间,但是如果仅使用线性变换,网络无法学习到数据的复杂模式或非线性关系。加入非线性激活函数后,网络能够通过层叠多个非线性层,学习复杂的函数映射,从而提高模型的表达能力。当为False时,Input的值不会发生改变,而是用了一个新的Output的值来继承这个-1。当值是True时,-1会像上面nn.ReLU内容中会折算成0,但是输出的地方就会有所不同。
2024-09-11 20:56:18 564
原创 神经网络骨架nn.Module
nn.Module 是 PyTorch 中的一个核心类,它是所有神经网络模块的基类。在 PyTorch 中构建模型时,通常会继承这个类来创建自定义的网络结构。nn.Module 提供了一系列用于构建神经网络的工具和方法,注:这是因为将一个值为 1.0 的张量 x 传递给模型,模型将其增加 1,所以输出是 2.0。进行一个非常简单的操作:对输入数据加1。
2024-09-07 16:03:35 450
原创 torchvision数据集使用
最下面的 3 表示类名classes的第三项,也就是[‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’] 中列表的第三项 “cat”4.step into my code(Alt+Shift+F7快捷键):单步执行,只进入自己代码的子函数,不会进入导入包的子函数。如果一直按F7,则会一层层一直进入。复制蓝色的链接,还可以在迅雷中添加链接进行下载,这样子下载的速度可能相对较快。
2024-09-05 20:34:00 898
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人