![](https://img-blog.csdnimg.cn/ecd70be28aac4ebbb5524197b8cb59e1.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Pytorch深度学习
关于Pytorch框架以及深度学习基本知识的笔记。
龙哥每天都要学
即便知道自己很菜,但只要努力就会有所收获。
展开
-
PyTorch 分类任务的softmax以及CrossEntropyLoss
多分类任务不需要在输出层使用softmax函数今天在看nn.CrossEntropyLoss()的文档的时候看到两句话:1.The input is expected to contain raw, unnormalized scores for each class.input 的维度要求是 [batch, C],其中C是分类的总数2.target 的维度直接是 batch就行了,而不需要进行 one-hot猛然醒悟,原来CorssEntropyLoss()函数里面会自动调用softmax函数原创 2021-07-30 19:44:41 · 2476 阅读 · 1 评论 -
PyToch+Annaconda+Cuda安装笔记
首先要安装好Annaconda,很早以前就安装好了,教程可以自己去找1、首先,在PyCharm里面安装一个conda环境注意:选择python版本的时候不要选3.9,选择3.8就可以了2、直接去pytorch官网找对应的安装命令:conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch自己遇到的问题:有时候在conda环境里使用pip安装命令报错了:ValueError: check_hostname re原创 2021-07-27 22:06:49 · 312 阅读 · 0 评论 -
深度学习 小知识笔记
关于优化算法首先看梯度下降算法关于训练集的分类:batch梯度下降:更新一次梯度使用的是整个训练集mini-batch梯度下降:更新一次梯度使用的是一个mini-batch,这是目前最常用的方法随机梯度下降(SGD):训练每一个样本都要更新一次梯度(但是在莫凡pytorch里面的 regression 和 classification 这两节里面,明明是对自己生成的100个样本点进行batch梯度下降,但他使用的优化器居然是torch.optim.SGD()???这也行。。。)具体的优化算法:原创 2021-07-26 14:09:06 · 241 阅读 · 0 评论 -
简单理解解决过拟合的方法:L2正则、dropout
什么是过拟合?简单理解就是:模型在训练集上表现很好,但是放到测试集上效果就变得很差了一般的解决方法1.增加训练数据。但是数据一般很难获得2.减少网络层数或神经元的数量。但是一不小心就会导致过拟合3.L2正则化4.dropout等等L2正则化L2正则化的基本思想就是在原始的损失函数中加入一项这一项就是网络神经元权重的内积的均值,如下:这样可以使得反向传播之后梯度会更新使得 权重衰减权重衰减 也就意味着神经网络中的部分神经元的作用会被削弱这样就有利于解决神经网络过拟合的问题dropo原创 2021-07-26 11:57:00 · 323 阅读 · 0 评论 -
关于PyTorch中向量的维度
import torchx = torch.tensor([1, 2, 3, 4], dtype=torch.float)x.shapeOut[14]: torch.Size([4])y = x.Ty.shapeOut[16]: torch.Size([4])代码如上,x就是一个普通的tensor向量,但是x的shape和x转置的shape居然是一样的这样让我分不清x到底是行向量还是列向量了,下面的代码会报错也是因为维度:net = torch.nn.Linear(1, 10)net(原创 2021-07-26 00:14:49 · 839 阅读 · 0 评论 -
常见报错:RuntimeError: expected scalar type Long but found Float
RuntimeError: expected scalar type Long but found Float这是一个非常常见的报错,我已经遇到过这个报错很多次了,但是之前没有仔细研究过,今天好好好看了看,终于找到了原因。首先把导致报错的代码写出啦:import torchimport torch.nn as nnv = torch.tensor([0])m = nn.Linear(1, 10)m(v)短短的几行代码,就是初始化了一个值为0的v和一个网络m,爆出了一大堆错:Traceba原创 2021-07-25 22:36:26 · 47969 阅读 · 5 评论 -
PyTorch的torch.nn.Linear()的计算方法
import torchimport torch.nn as nnlayer = nn.Linear(10, 3)vector = torch.ones(10)我们定义了一个从10到3的全连接层layer,并且创建了一个全1的特征向量vector按照我们的理解,将vector放入layer也就是进行一个矩阵运算,vector是一个 1乘10 矩阵,那么layer肯定是一个 10乘3 矩阵,这样才能使得输出向量的维度是3weight = layer.weight.databias = laye原创 2021-07-25 21:03:39 · 2424 阅读 · 0 评论 -
PyTorch的Variable已经不需要用了!!!
Pytorch的torch.autograd.Variable今天在看《莫凡Python》的PyTorch教程的时候发现他的代码还在使用Variable,并且我记得过去读一些GitHub上面的代码的时候也发现了Variable这个东西,根据教程中所说的,想要计算tensor的梯度等等,就必须将tensor放入Variable中并指定required_grad的值为True,通过这个Variable的容器才能进行梯度求导等等操作,代码如下:import torchfrom torch.autograd原创 2021-07-24 12:20:38 · 6682 阅读 · 9 评论 -
Pytorch指定某块GPU
服务器有两块GPU,原本没有指定GPU的,直接用cuda()语句可以运行今天GPU 0 上面有别人在跑的程序,所以让我指定GPU 1 来跑一开始试了各种方法代码还是报错,最后简单地加了一条语句就跑通了import torchdevice = 1torch.cuda.set_device(device)...原创 2021-06-21 21:11:01 · 402 阅读 · 1 评论