, [1, 2, 3, 4], [4, 3, 2, 1]]]) tensor([[[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]] ) torch.tensor([[[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]]).shape torch.Size([1, 3, 4]) # 计算 x = torch.tensor ([1.0, 2, 4, 8]) y = torch.tensor([2, 2, 2, 3]) x+y, x-y, x*y, x/y, x**y (tensor([ 3., 4., 6., 11.] 4) Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]) # dim 按第i维合并 torch.cat((X, Y), dim [ 8., 9., 10., 11.], [ 2., 1., 4., 3.], [ 1., 2., 3., 4.], [ 4., 3
深度学习简介 定义以及与机器学习的关系 深度学习是指机器学习中的一类函数,能够逐级表示越来越抽象的概念或模式,他们的形式通常为多层神经网络,近年来,已逐渐成为处理图像、文本预料和声音信号等复杂高纬度数据的主要方法 ,属于机器学习的一类,外在特点是端到端的训练; 机器学习研究如何使计算机利用经验提高性能,属于人工智能领域的分支,也是实现人工智能的一种手段; 神经网络核心原则 交替使用现行和非线性处理单元,常被称为 “层”; 使用链式法则(即反向传播)来更新网络参数; 深度学习发展的原因 优秀的容量控制方法,如丢弃法使大型网络的训练不再受制于过拟合(大型神经玩两个学会记忆大部分训练数据的行为); 注意力机制解决了 预备知识 这一章节中,主要包含以下内容: 数据操作 详情请参见数据操作; 自动求梯度 3. 深度学习基础 这一章节中,主要有以下相关知识点: 线性回归 详情请参见深度学习之线性回归; Softmax回归 详情请参见深度学习之Softmax; 多层感知机 详情请参见多层感知机
name转换为numpy数组并存储到name1中 name1 = torch.from_numpy(name) 将name转换为Tensor数组并存储到name1中 自动求梯度(autograd) 动手学习深度学习 ,2.3 2020.1.28,好久没学习,今天开始学习。 深度学习过程中,常需要对函数进行求梯度,PyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图,并执行反向传播。 , 3.], [3., 3.]], grad_fn=<AddBackward0>) #可以看到属性.grad_fn的值为 AddBackward0<AddBackward0 y3 = y1+y2 print(x.requires_grad) print(y1.requires_grad)print(y2.requires_grad)print(y3.requires_grad
本文链接:https://blog.csdn.net/github_39655029/article/details/89151587 作为深度学习的基础,我们常会频繁对数据进行操作,以下则是介绍如何对内存中的数据进行常用操作的相关代码 # 获取NDArray实例元素总数 numOfElement = rowX.size print(numOfElement) # 改变行向量形状 newRowX = rowX.reshape((3,4 )) print(newRowX) # 创建元素全为0的张量 tensor0 = nd.zeros((2, 3, 4)) print(tensor0) # 创建元素均为1的张量 tensor1 = nd.ones((3, 4)) print(tensor1) # 通过list指定要创建的NDArray中每个元素的值 tensorY = nd.array([[1,3, 4, 9], [6, 3, [1:3]) # 访问单个元素 print(newRowX[2,3]) newRowX[2, 3] = 15 print(newRowX[2,3]) print(newRowX) newRowX[1:
机器之心报道 项目作者:ShusenTang 参与:思 想要入门最前沿的深度学习,想要玩最常见的深度学习框架?那就用 PyTorch 版的《动手学深度学习》吧,零基础也能入门 DL。 李沐等人的开源中文书《动手学深度学习》现在有 PyTorch 版实现了。不论是原书中的示例代码,还是实战项目,原来的 MXNet 都可以无缝转化到 PyTorch 代码。 之前,亚马逊首席科学家李沐等人曾以电子版的形式在 GitHub 上开源了一本深度学习中文书籍——《动手学深度学习》,这是一本深度学习的入门教程类书籍。 最后,《动手学深度学习》与 PyTorch 也是非常好的搭档,也就是说我们不需要任何机器学习或深度学习背景知识,只需要了解基本数学与 Python 编程就可以了。 从 MXNet 到 PyTorch 这样看起来可能不太直观,我们可以通过两个案例看看原版《动手学深度学习》随书代码和 PyTorch 版之间的区别。
Loss: 0.458402, Train acc 0.833450, Test acc 0.823918 Epoch 3.
学习率 show_trace(gd(0.05)) epoch 10, x: 3.4867844009999995 ? 动态学习率 ?
<NDArray 5x4 @cpu(0)> 丢弃法的本质 一般来说,在集成学习里,我们可以对训练数据集有放回地采样若干次并分别训练若干个不同的分类器;测试时,把这些分类器的结果集成一下作为最终分类结果。 事实上,丢弃法在模拟集成学习。丢弃法实质上是对每一个这样的数据集分别训练一个原神经网络子集的分类器。与一般的集成学习不同,这里每个原神经网络子集的分类器用的是同一套参数。因此丢弃法只是在模拟集成学习。 ) # 参数数组 params = [W1, b1, W2, b2, W3, b3] # 需要计算梯度, 添加自动求导 for param in params: param.attach_grad + b3 训练 # 定义交叉熵损失 softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss() # 定义学习率 learning_rate Loss: 0.499490, Train acc 0.818493, Test acc 0.840244 Epoch 3.
作为一名新手如何能够快速上手深度学习,在实践中使用深度学习呢?《动手学深度学习》是由亚马逊首席科学家、美国卡内基梅隆大学计算机博士李沐等人编著,带你从浅至深实践深度学习。 教程的目录以及学习路线: ? 目录如下: ? ? ? ?
优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) %matplotlib inline import sys sys.path.append('/home/kesci/input ') import d2lzh1981 as d2l from mpl_toolkits import mplot3d # 三维画图 import numpy as np def f(x): return x * np.cos(np.pi * x) def g(x): return f(x) + 0.2 * np.cos(5 * np.pi * x) d2l.set_figsize((5, 3)) x 优化在深度学习中的挑战 局部最小值 鞍点 梯度消失 局部最小值 ?
本文章基于李沐老师的《动手学深度学习》(pytorch版),在此学习观礼膜拜。 https://zh-v2.d2l.ai/ 课程论坛讨论:https://discuss.d2l.ai/c/16Pytorch 论坛: https://discuss.pytorch.org/ 深度学习介绍 当前深度学习和机器学习(在数学上的)的可解释性不是很好,更多地将其认定为黑盒,在等待更好的学术进展。 环境安装与配置 本环境的安装共分为以下几步: 安装Miniconda并配置好环境变量:去Miniconda官网找到对应版本(我选的是Windows installers中的Python 3.8 Miniconda3 我推荐文章《CSDN博主「阿雪_」:跟李沐学AI 动手学深度学习 环境配置d2l、pytorch的安装 (windows环境、python版本3.7)》。 使用conda创建虚拟环境并激活。
第一课:从上手到多类分类 课程首先介绍了深度学习的很多应用:例如增强学习、物体识别、语音识别、机器翻译、推荐系统、广告点击预测等。 课程目的:通过动手实现来理解深度学习,跟工业界应用相比,主要只是数据规模和模型复杂度的区别。 深度学习的轮子很多,例如Caffe,TensorFlow,mxnet,PyTorch,CNTK等。 NDArray的基本用法: from mxnet import ndarray as nd # 创建矩阵 nd.zeros((3, 4)) x = nd.ones((3, 4)) nd.array([ [1,2],[2,3]]) y = nd.random_normal(0, 1, shape=(3, 4)) # 查看矩阵大小 y.shape # 查看矩阵元素个数 y.size # 矩阵加法 x + y # 矩阵乘法 x * y # 指数运算 nd.exp(y) # 矩阵乘法 nd.dot(x, y.T) # 广播操作 a = nd.arange(3).reshape((3,1)) b
在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征 然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。 在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。 学习率: ? 代表在每次优化中,能够学习的步长的大小 批量大小: ? torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)` 训练 num_epochs = 3
Quincuntial/article/details/79501285 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 注:本文为李沐大神的《动手学深度学习 net(X), y).mean().asscalar() # 训练 def train(weight_decay): # 定义训练的迭代周期 epochs = 10 # 定义学习率
因此,给定学习率,梯度下降迭代自变量时会使自变量在竖直方向比在水平方向移动幅度更大。那么,我们需要一个较小的学习率从而避免自变量在竖直方向上越过目标函数最优解。 ,该向量中每一个元素在迭代时都使用相同的学习率。例如,在学习率为 ? 的梯度下降中,元素 ? 和 ? 都使用相同的学习率 ? 来自我迭代: ? 在“动量法”一节里我们看到当 ? 和 ? 本节我们介绍AdaGrad算法,它根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题 [1]。 这些按元素运算使得目标函数自变量中每个元素都分别拥有自己的学习率。 Feature 需要强调的是,小批量随机梯度按元素平方的累加变量 ? 出现在学习率的分母项中。 ,将模型参数中每个元素的学习率通过按元素运算重新调整: ? 其中 ? 是学习率, ? 是为了维持数值稳定性而添加的常数,如 ? 。
Quincuntial/article/details/79348854 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 注:本文为李沐大神的《动手学深度学习 Loss: 0.530560, Train acc 0.822583, Test acc 0.831731 Epoch 3.
out:输出的张量,默认为None 不同形状向量相加广播机制(broadcasting mechanism)【必须同纬度】 a = torch.arange(3).reshape(3,1) b = torch.arange item(),或者强制类型转换实现 a = torch.tensor([3.5]) a,a.item(),float(a),int(a) (tensor([3.5000]), 3.5, 3.5, 3) 求导和反向传播:计算图可以帮助自动计算函数的导数,特别是在深度学习中的反向传播算法中。通过在计算图中计算每个节点的梯度,可以从输出端反向传播梯度到输入端,以便优化模型的参数。 z = u *x z.sum().backward() x.grad == u tensor([True, True, True, True]) 2.4、基础优化方法 梯度计算往往是深度学习中成本最贵的 小批量随机梯度下降是深度学习默认的求解方法。 两个重要的超参数是 批量大小和学习率。
前戏 关于《动手学深度学习》 学过或正在学习MXNet框架的同学,一定很熟悉《动手学深度学习》这个课程。该课程算是第一个最硬国语版讲解深度学习的课程(从理论到实战)。 在线文档 离线文档 论坛 免费视频讲解(B站/斗鱼满足你) GitHub开源代码和文档 《动手学深度学习》这是一个深度学习的教学项目。 ——摘自《动手学深度学习》在线文档 这里粗暴po几张图 在线文档 link: http://zh.gluon.ai/ ? 今天Amusi在朋友圈看到一朋友发了"《动手学深度学习》0.7版发布,欢迎指正"的链接。讲真,起了一身鸡皮疙瘩,虽然Amusi还没有入MXNet这个坑,但也垂涎已久,我想将来迟早有个约会。 下面正式简单介绍《动手学深度学习》0.7版本 《动手学深度学习》0.7版本 李沐: 历经五个月将整个教程重写了一遍,希望能达到出版质量。
动手学deep learning ☁️本专栏会定期更新关于动手学深度学习的每章知识点的讲解,题目答案 如果喜欢,欢迎点赞,收藏 动手学深度学习-预备知识篇 线性代数篇 1-3题讲解 证明一个矩阵 # 3.对于任意给定的*方*阵A,总是有A+A.T是对称矩阵??? Z = torch.arange(16,dtype = torch.float32).reshape(4,-1) print(3,Z+Z.T),print(3,(Z+Z.T).T) Y = torch.tensor ) (2,3,4) 的张量X。 *W2).sum(axis = [0,1]))) print(sum(sum(W2*W2))) print((W2*W2).sum(axis = [0,1])) 运行结果 下篇预备知识: 1.微分学实现绘画切线
Quincuntial/article/details/79273631 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 注:本文为李沐大神的《动手学深度学习 Epoch 0, average loss: 7.403182 Epoch 1, average loss: 0.854247 Epoch 2, average loss: 0.099864 Epoch 3,