d2l-zh.zip jupyter notebook 数据操作 import torch # 张量 x = torch.arange(12) x tensor([ 0, 1, 2, 3, 4, 5, 6, # number of elements x.numel() 12 X = x.reshape(3, 4) X tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 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. torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1) (tensor([[ 0., 1., 2., 3.], [ 4., 5., 6. [ 4., 3., 2., 1.]]), tensor([[ 0., 1., 2., 3., 2., 1., 4., 3.], [ 4., 5., 6.
深度学习简介 定义以及与机器学习的关系 深度学习是指机器学习中的一类函数,能够逐级表示越来越抽象的概念或模式,他们的形式通常为多层神经网络,近年来,已逐渐成为处理图像、文本预料和声音信号等复杂高纬度数据的主要方法 ,属于机器学习的一类,外在特点是端到端的训练; 机器学习研究如何使计算机利用经验提高性能,属于人工智能领域的分支,也是实现人工智能的一种手段; 神经网络核心原则 交替使用现行和非线性处理单元,常被称为 “层”; 使用链式法则(即反向传播)来更新网络参数; 深度学习发展的原因 优秀的容量控制方法,如丢弃法使大型网络的训练不再受制于过拟合(大型神经玩两个学会记忆大部分训练数据的行为); 注意力机制解决了 深度学习基础 这一章节中,主要有以下相关知识点: 线性回归 详情请参见深度学习之线性回归; Softmax回归 详情请参见深度学习之Softmax; 多层感知机 详情请参见多层感知机
name转换为numpy数组并存储到name1中 name1 = torch.from_numpy(name) 将name转换为Tensor数组并存储到name1中 自动求梯度(autograd) 动手学习深度学习 ,2.3 2020.1.28,好久没学习,今天开始学习。 深度学习过程中,常需要对函数进行求梯度,PyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图,并执行反向传播。
本文链接:https://blog.csdn.net/github_39655029/article/details/89151587 作为深度学习的基础,我们常会频繁对数据进行操作,以下则是介绍如何对内存中的数据进行常用操作的相关代码 tensor1 = nd.ones((3, 4)) print(tensor1) # 通过list指定要创建的NDArray中每个元素的值 tensorY = nd.array([[1,3, 4, 9], [6,
机器之心报道 项目作者:ShusenTang 参与:思 想要入门最前沿的深度学习,想要玩最常见的深度学习框架?那就用 PyTorch 版的《动手学深度学习》吧,零基础也能入门 DL。 李沐等人的开源中文书《动手学深度学习》现在有 PyTorch 版实现了。不论是原书中的示例代码,还是实战项目,原来的 MXNet 都可以无缝转化到 PyTorch 代码。 之前,亚马逊首席科学家李沐等人曾以电子版的形式在 GitHub 上开源了一本深度学习中文书籍——《动手学深度学习》,这是一本深度学习的入门教程类书籍。 最后,《动手学深度学习》与 PyTorch 也是非常好的搭档,也就是说我们不需要任何机器学习或深度学习背景知识,只需要了解基本数学与 Python 编程就可以了。 从 MXNet 到 PyTorch 这样看起来可能不太直观,我们可以通过两个案例看看原版《动手学深度学习》随书代码和 PyTorch 版之间的区别。
import mxnet as mx from mxnet import nd from mxnet import gluon from mxnet import autograd from mxnet.gluon import nn from utils import load_data_fashion_mnist, accuracy, evaluate_accuracy 定义模型并添加丢弃层 # 定义模型 net = nn.Sequential() # 丢弃概率 drop_prob1 = 0.2 d
学习率 show_trace(gd(0.05)) epoch 10, x: 3.4867844009999995 ? 动态学习率 ? train_ch7(sgd, None, {'lr': lr}, features, labels, batch_size, num_epochs) 对比 train_sgd(1, 1500, 6)
] [ 4. 5. 6. 7.] [ 8. 9. 10. 11.] [ 12. 13. 14. 15.] [ 16. 17. 18. 19.]] <NDArray 5x4 @cpu(0)> 丢弃法的本质 一般来说,在集成学习里,我们可以对训练数据集有放回地采样若干次并分别训练若干个不同的分类器;测试时,把这些分类器的结果集成一下作为最终分类结果。 事实上,丢弃法在模拟集成学习。丢弃法实质上是对每一个这样的数据集分别训练一个原神经网络子集的分类器。与一般的集成学习不同,这里每个原神经网络子集的分类器用的是同一套参数。因此丢弃法只是在模拟集成学习。 nd.dot(h2, W3) + b3 训练 # 定义交叉熵损失 softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss() # 定义学习率
作为一名新手如何能够快速上手深度学习,在实践中使用深度学习呢?《动手学深度学习》是由亚马逊首席科学家、美国卡内基梅隆大学计算机博士李沐等人编著,带你从浅至深实践深度学习。 教程的目录以及学习路线: ? 目录如下: ? ? ? ?
优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) %matplotlib inline import sys sys.path.append('/home/kesci/input 优化在深度学习中的挑战 局部最小值 鞍点 梯度消失 局部最小值 ? e.g. x, y = np.mgrid[-1: 1: 31j, -1: 1: 31j] z = x**2 - y**2 d2l.set_figsize((6, 4)) ax = d2l.plt.figure indexing='ij') z = x**2 + 0.5 * np.cos(2 * np.pi * y) # Plot the 3D surface d2l.set_figsize((6,
本文章基于李沐老师的《动手学深度学习》(pytorch版),在此学习观礼膜拜。 https://zh-v2.d2l.ai/ 课程论坛讨论:https://discuss.d2l.ai/c/16Pytorch 论坛: https://discuss.pytorch.org/ 深度学习介绍 当前深度学习和机器学习(在数学上的)的可解释性不是很好,更多地将其认定为黑盒,在等待更好的学术进展。 我推荐文章《CSDN博主「阿雪_」:跟李沐学AI 动手学深度学习 环境配置d2l、pytorch的安装 (windows环境、python版本3.7)》。 使用conda创建虚拟环境并激活。
第一课:从上手到多类分类 课程首先介绍了深度学习的很多应用:例如增强学习、物体识别、语音识别、机器翻译、推荐系统、广告点击预测等。 课程目的:通过动手实现来理解深度学习,跟工业界应用相比,主要只是数据规模和模型复杂度的区别。 深度学习的轮子很多,例如Caffe,TensorFlow,mxnet,PyTorch,CNTK等。
在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征 然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。 在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。 学习率: ? 代表在每次优化中,能够学习的步长的大小 批量大小: ? dense = net[0] print(true_w, dense.weight.data) print(true_b, dense.bias.data) 两种实现方式的比较 从零开始的实现(推荐用来学习
Quincuntial/article/details/79501285 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 注:本文为李沐大神的《动手学深度学习 net(X), y).mean().asscalar() # 训练 def train(weight_decay): # 定义训练的迭代周期 epochs = 10 # 定义学习率
") import d2lzh1981 as d2l def adagrad_2d(x1, x2, s1, s2): g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6 dtype=torch.float32) return (s_w, s_b) def adagrad(params, states, hyperparams): eps = 1e-6 ") import d2lzh1981 as d2l def rmsprop_2d(x1, x2, s1, s2): g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6 return (s_w, s_b) def rmsprop(params, states, hyperparams): gamma, eps = hyperparams['beta'], 1e-6 v_w, s_w), (v_b, s_b)) def adam(params, states, hyperparams): beta1, beta2, eps = 0.9, 0.999, 1e-6
Quincuntial/article/details/79348854 文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 注:本文为李沐大神的《动手学深度学习
求导和反向传播:计算图可以帮助自动计算函数的导数,特别是在深度学习中的反向传播算法中。通过在计算图中计算每个节点的梯度,可以从输出端反向传播梯度到输入端,以便优化模型的参数。 y = x.sum()# y =x1+x2+x3+... y.backward() y,x.grad (tensor(6., grad_fn=<SumBackward0>), tensor([1., .backward() y,x.grad >#### (tensor([0., 1., 4., 9.], grad_fn=\<MulBackward0>), tensor([0., 2., 4., 6. 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题讲解 证明一个矩阵 # 5.给定一个任意的张量,要指出len(X)是对应的那个轴的长度,这个轴是什么 X1 = tc.ones(24).reshape(6,-1) #轴度为2 print(len(X1)) tc.arange(24).reshape(4,2,-1) #轴度为3 print(len(X2)) W = tc.zeros(30) #轴度为1 print(len(W)) 运行结果 6. torch.float32).reshape(1,2,2,256) print(tc.norm(W1)) W2 = tc.arange(36,dtype = torch.float32).reshape(6,6 *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 | 简书 注:本文为李沐大神的《动手学深度学习