
pytorch
文章平均质量分 78
阿肉~
这个作者很懒,什么都没留下…
展开
-
【Pytorch】21. RNN代码分析
本节会学习用一个简单的RNN来做时间序列本节会学习用一个简单的RNN来做时间序列的预测。如图所示,给定一些输入数据,然后可以产生下一个事件的预测我们会按照下面的步骤First, we’ll create our dataThen, define an RNN in PyTorchFinally, we’ll train our network and see how it performs创建数据import torchfrom torch import nnimport nump原创 2021-04-16 16:16:02 · 5418 阅读 · 2 评论 -
【Pytorch】21. 循环神经网络RNN和LSTM
文章目录RNNLSTMLSTM架构Learn Gate学习门Forget Gate 遗忘门Remember Gate记忆门Use Gate 应用门其他架构Gated Recurrent Unit(GRU)Peephole Connections本节我们学习recurrent neural networks (RNNs)和 long short-term memory (LSTM)RNN假设有一个普通的神经网络,输入一张图片,预测出来是狗但是如果这张图片真的是一只狼呢?神经网络怎么才可以知道呢?假如原创 2021-04-16 12:50:14 · 1222 阅读 · 1 评论 -
【Pytorch】20. Style Transfer风格迁移代码分析
根据论文Image Style Transfer Using Convolutional Neural Networks, by Gatys 来重建代码。论文使用VGG19,网络结构如下。接下来,我们要做的就是,用一个预训练后的VGG19网络来提取content和style的features。然后写出content和style的loss函数,并不断更新我们的target image,直到达到我们想要的效果。你也可以用自己的图片# import resources%matplotlib inline原创 2021-04-14 12:06:20 · 1291 阅读 · 0 评论 -
【Pytorch】20. Style Transfer 风格迁移
文章目录VGG19风格迁移content lossGram MatrixStyle Losstotal loss风格迁移就是将一张图片的风格迁移到另一张图片上面,比方说把浮世绘的风格迁移到猫的图片上VGG19我们需要用到VGG19的网络,这个网络长下面的样子,一张三通道的彩色图片作为输入,经过一系列的卷积和pooling层,有5个pooling层,中间夹着一组2个或者4个的卷积层,比方说第一个pooling层之前就有两个卷积层,最后一个pooling层之前有四个卷积层。最后是3个全连接层。我们原创 2021-04-13 22:22:09 · 924 阅读 · 0 评论 -
【Pytorch】18. CNN的不同层
文章目录卷积层过滤器的重要性卷积层池化层增加深度Pytorch实现PyTorch 中的卷积层PyTorch 中的池化层卷积层过滤器的重要性当你深入学习这门课程时,将发现刚刚学习的不同类型的过滤器非常重要,尤其是当你学习卷积神经网络 (CNN) 时。CNN 是一种深度学习模型,可以学习完成图像分类和对象识别等任务。它们可以使用卷积层跟踪空间信息并学习提取特征,例如对象边缘。下面是一个简单的 CNN 结构示例,由多个层级组成,包括这个“卷积层”。卷积层我们通过向输入图像应用一系列不同的图像过滤器(也原创 2021-04-12 18:15:01 · 781 阅读 · 0 评论 -
【Pytorch】17. 卷积
MLP和CNN我们之前用到的数据集是MNIST,这是一个很规整的数据集,但是实际情况中我们经常会遇到不那么clean的数据,比方说数字在网格的任何位置,或者颜色有变化。这对MLP多层感知机来说就很复杂了。这类图片对于CNN来说就很简单了举个例子,这里是一个4×4的图片,如果是MLP的话,需要将图片进行flatten,然后中间有隐藏层,稠密相连,也就是dense connection,仔细看NLP,就会发现有很多多余的相连,每个隐藏节点都需要与原始图像的每个像素相连吗?或许不是,将原图分成四个部分,原创 2021-04-08 17:54:29 · 332 阅读 · 0 评论 -
【Pytorch】16. 使用预训练模型分类自己的图片
本节我们做一个迁移学习的练习,上一节我们已经学了识别猫狗,这一节我们将使用一个在ImageNet上面预训练好的模型,用来识别我们自己的猫狗图片用torchvision.models可以下载预训练网络。大多数的预训练模型都要求输入是224x224的图片,然后color channel是正态分布的,均值和方差分别是 [0.485, 0.456, 0.406] 和 [0.229, 0.224, 0.225]data_dir = './Cat_Dog_data'# TODO: Define transfo原创 2021-04-07 21:29:08 · 974 阅读 · 0 评论 -
【Pytorch】15. 图片数据的处理
之前我们用到的数据集都是人工合成的数据集,现在让我们用一些真实生活中的数据集,本节会用到一些 full-sized images 就像我们用手机拍出来的照片一样。我们使用Kaggle上的dataset of cat and dog photos文章目录Loading Image DataTransformsData LoadersData AugmentationLoading Image Data最简单的导入图片的方法就是使用 torchvision 中的 datasets.ImageFolde原创 2021-04-07 13:28:32 · 603 阅读 · 1 评论 -
【Pytorch】14. 保存和加载模型
本节会介绍在pytorch中如何保存和加载模型,这样就可以使用之前训练好的模型进行预测或者继续训练了state_dict可以查看储存在model中的参数,weights和bias的矩阵print("Our model: \n\n", model, '\n')print("The state dict keys: \n\n", model.state_dict().keys())print (model.state_dict())保存模型最简单的方法就是用torch.save, 例如我们可以把它存原创 2021-04-07 11:32:50 · 187 阅读 · 0 评论 -
【Pytorch】12. 练习:分类Fashion-MNIST数据
上一节学了怎么搭建和训练神经网络,你将使用 Fashion-MNIST dataset的数据1. Load the Datasetimport torchfrom torchvision import datasets, transformsimport helper# Define a transform to normalize the datatransform = transforms.Compose([transforms.ToTensor(),原创 2021-04-02 12:03:50 · 385 阅读 · 0 评论 -
【Pytorch】11. 训练神经网络
文章目录Losses in PyTorchAutograd训练网络上一节我们学习了如何构建一个神经网络,但是构建好的神经网络并不是那么的smart,我们需要让它更好的识别手写体。也就是说,我们要找到这样一个function F(x),能够将一张手写体图片转化成对应的数字的概率刚开始的网络非常naive,我们要计算**loss function(cost)**来估计预测的error,例如使用mean squared lossℓ=12n∑in(yi−y^i)2\large \ell = \frac{1原创 2021-04-02 10:47:00 · 400 阅读 · 0 评论 -
【Pytorch】10. torch.nn介绍
深度神经网络往往需要上百层,用上一节我们使用的直接通过weights矩阵来构建网络几乎不可能,所以需要pytorch的 nn 模块,为了演示它的用法, 我们将使用数据库MNIST。每张图片都是28×28像素的# Import necessary packages%matplotlib inline # 将 matplotlib 设置为以交互方式在 notebook 中工作%config InlineBackend.figure_format = 'retina' #在分辨率较高的屏幕(例如 R原创 2021-04-01 15:04:52 · 1025 阅读 · 0 评论 -
【PyTorch】9. pytorch中的Tensors
Introduction to Deep Learning with PyTorch文章目录Introduction to Deep Learning with PyTorchNeural NetworksTensors改变张量形状Stack them up!和numpy的转化Neural Networks一个简单的神经网络数学表达式为:y=f(w1x1+w2x2+b)y = f(w_1 x_1 + w_2 x_2 + b)y=f(w1x1+w2x2+b)y=f(∑iwixi+b)原创 2021-03-30 15:22:56 · 345 阅读 · 0 评论 -
【Pytoch】8. 梯度消失和学习速率下降
上一节讲了神经网络的优化办法,这节讲神经网络会遇到的其他问题文章目录梯度消失使用其他激活函数动量批次与随机梯度下降学习速率衰退梯度消失看一下sigmoid激活函数的图像,在两端的导数都非常的小那么在多层感知机中,反向传播计算梯度的时候,这种情况尤为明显这也就意味着,我们在梯度下降的时候,迈的步子非常非常小,可能永远也无法从山上下来,这种现象就叫做梯度消失如何解决这个问题呢?使用其他激活函数一个方法就是使用其他激活函数,比如说双曲正切Relu函数,这个函数也是除了sigmoid之外最原创 2021-03-30 15:17:13 · 594 阅读 · 0 评论 -
【Pytorch】7. 训练优化
前面的部分我们学了怎么构建神经网络以及如何训练,但有时候我们发现结果不如意,那么该怎么办呢?这部分就学习一些解决方法文章目录使用测试集(验证集)早期停止正则化(Regulation)Dropout随机重新开始使用测试集(验证集)下面哪个模型更优呢?其实肉眼是不太看的出来的,就算右边的模型好像所有点都分类正确了,但也有可能过拟合,所以我们可以引入测试集(或者验证集),先训练一部分,然后进行测试结果发现,第一个模型有一个分类错误,第二个模型有两个分类错误,所以跟我们的直觉还是不相符的因此在机器原创 2021-03-29 16:44:55 · 213 阅读 · 0 评论 -
【Pytorch】6. 反向传播
前向反馈前向反馈是神经网络用来将输入变成输出的流程。如下图,利用输入向量,对其应用一系列模型和sigmoid函数,这些图组合后成为高级的非线性图再看一遍这个过程,对输入向量先应用W1,然后进行sigmoid,再应用W2,再进行sigmoid,然后最后W3,sigmoid,就得到了y^,这个过程就是前向反馈反向传播和之前一样,神经网络将产生误差函数,最终我们需要最小化该误差函数。现在,我们准备好训练神经网络了。为此,我们将使用一种方法,叫做反向传播。简而言之,反向传播将包括:进行前向反馈运算原创 2021-03-28 09:57:37 · 383 阅读 · 0 评论 -
【Pytorch】5. 神经网络结构
神经网络结构在学习了感知机之后,我们可以来认识神经网络,神经网络可以看成是更复杂的更多层的感知机组成的。例如下面这个例子,两个线性的感知机加起来可以得到右边这样的模型假如第一个模型的某一个点的预测值为0.7,第二个模型0.8,那么加起来就是1.5,但是概率值是没有大于1这一说的,所以要把它变成01之间的数字,回想之前学的可以把任何数字映射到01范围内的函数就是sigmoid函数。总结一下就是单独用每个模型计算,然后相加之后sigmoid函数。如果我们希望第一个模型的影响比第二个更大,只要加上权重原创 2021-03-27 15:29:04 · 234 阅读 · 0 评论 -
【Pytorch】3. 最大似然率&交叉熵
最大似然率 Maximum Likehood假如我要预测我会被某所大学录取的概率,模型1预测出来概率是80%,模型2是55%,那么哪个模型更好呢?要看我最终是否被录取,如果被录取了,那么模型1就是更好的,如果没有,就是模型2。当然我只是其中一个例子,如果有很多很多的人,那么能更好的预测这些人的模型就是更好的模型,这就叫做最大似然率图片中所示的两个模型,数字表示预测该点发生的概率,明显第一个模型没有第二个模型预测的好将第一个模型变到第二个模型的方法就是最大化似然概率但是我们不希望用乘积的形式来表示原创 2021-03-24 16:13:58 · 625 阅读 · 0 评论 -
【Pytorch】2. 激活函数
激活函数梯度下降需要注意的地方就是把离散型的也改成连续型的,因为误差函数必须是可微分的。因为如果是离散型,有可能不管从哪个方向下降,梯度值都是一样的,不存在最大的梯度的方向。而从连续性变成离散型,我们可以将激活函数从左侧的阶跃函数,变成右边的sigmoid函数sigmoid函数可以将整个平面变成一个概率平面,如图所示,经过了sigmoid function之后,平面上的点落在某个地方就可以知道这一点预测为蓝色或者红色区域的概率了然后感知机也发生了变化,原先我们说这个学生会不会被录取,现在我们原创 2021-03-19 17:42:15 · 354 阅读 · 0 评论 -
[pytorch]感知机
如果你跟我一样想从非常简单的概念入手,学习最基本的pytorch代码,可以关注我的专栏,在目录中找到pytorch简易教程的文章部分,我会持续保持更新理论部分从一个简单的问题入手,假设我们是一间大学,来决定录取哪些学生,我们有这些学生的两个数据,一个是在校平时成绩Grades,一个是考试成绩test红色的点表示这些学生被拒绝,蓝色的点表示这些学生通过很明显,如果能找到一条直线进行划分,那么下次再有学生来了,只要看他在直线的那一边,就可以决定这个学生是通过还是拒绝把上面的例子.原创 2020-11-02 18:58:04 · 1041 阅读 · 1 评论