| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 2021-09-05 -> 正文阅读 |
|
[人工智能]2021-09-05 |
第一次作业:深度学习基础一、数据操作
? ?张量(Tensor):实际为n维数组,具有一个轴的对应数学上的向量,具有两个轴的对应数学上的矩阵,三个及以上的无特殊称谓。
(tensor([[ 0., 1., 2., 3.], [ 4., 5 ., 6., 7.], [ 8., 9., 10., 11.], [ 2., 1., 4., 3.], [ 1., 2., 3., 4.], [ 4., 3., 2., 1.]]), tensor([[ 0., 1., 2., 3., 2., 1., 4., 3.], [ 4., 5., 6., 7., 1., 2., 3., 4.], [ 8., 9., 10., 11., 4., 3., 2., 1.]])) cat操作可连结两个张量,dim=0是指在矩阵的行上操作,如上所示,是把X和Y两个张量在行上面“堆”起来了,dim=1是指在矩阵的列上面操作,如上所示,是将原来张量的列拓宽了。 ? ? ?3.可以通过逻辑运算符创建二元张量,比如用==、>和< ? ? ?4.sum对张量中的所有元素进行求和会产生一个只有一个元素的张量。
?当在形状不同的张量上进行计算时,需要使用广播机制,首先,通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状。其次,对生成的数组执行按元素操作。
可使用切片操作进行原地更新操作,使得更新后的指向不变(更新后的结果的ID与原来的相同),切片的结果是原列表片段或者全部的拷贝(与原来ID不同)
id(Z): 140272150341696 id(Z): 140272150341696
二、数据预处理
?首先创建一个人工数据集,并存储在csv(逗号分隔值,其文件以纯文本形式存储表格数据(数字和文本))文件
要从创建的CSV文件中加载原始数据集,我们导入
? ? 2.?处理缺失值 ? ? ?例子中,“NaN”项代表缺失值。为了处理缺失的数据,典型的方法包括插值和删除,其中插值用替代值代替缺失值。而删除则忽略缺失值。 ? ? ?通过位置索引
NumRooms Alley 0 3.0 Pave 1 2.0 NaN 2 4.0 NaN 3 3.0 NaN ? ? ? ?对于
NumRooms Alley_Pave Alley_nan 0 3.0 1 0 1 2.0 0 1 2 4.0 0 1 3 3.0 0 1 ? ? ? 3. 转换为张量格式
(tensor([[3., 1., 0.], [2., 0., 1.], [4., 0., 1.], [3., 0., 1.]], dtype=torch.float64), tensor([127500, 106000, 178100, 140000])) 三、线性代数1、标量:仅包含一个数值的叫标量(scalar) 2、向量:可以将向量视为标量值组成的列表(列向量为向量的默认方向)。我们将这些标量值称为向量的元素(element)或分量(component)。我们通过一维张量处理向量。一般来说,张量可以具有任意长度,取决于机器的内存限制。 在代码中,我们通过张量的索引来访问任一元素。
向量的长度和维度相等,指包含标量的个数,当用张量表示一个向量(只有一个轴)时,我们也可以通过 3、矩阵:用.reshape讲一元张量转换为二元张量(矩阵)
矩阵的转置
对称矩阵可手动定义,再将其与转置矩阵进行张量的逻辑运算,判断是否对称。 4、张量 当我们开始处理图像时,张量将变得更加重要,图像以nn维数组形式出现,其中3个轴对应于高度、宽度,以及一个通道(channel)轴,用于堆叠颜色通道(红色、绿色和蓝色)。其他张量的操作前面已经学习过。 5、张量算法的基本性质 两个矩阵的按元素乘法称为哈达玛积(Hadamard product)(数学符号⊙)区别于矩阵乘法 将张量乘以或加上一个标量不会改变张量的形状(方向不变,只是改变了大小),其中张量的每个元素都将与标量相加或相乘。 ?6、降维 ? ? ? ?默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。 我们还可以指定张量沿哪一个轴来通过求和降低维度。以矩阵为例,为了通过求和所有行的元素来降维(轴0),我们可以在调用函数时指定
(tensor([ 6., 22., 38., 54., 70.]), torch.Size([5])) 7、矩阵-向量积
8、矩阵-矩阵乘法
9、范数:L1范数为向量元素的平方和的平方根,L2范数为向量元素的绝对值之和,与L2范数相比,L1范数受异常值的影响较小
矩阵的弗罗贝尼乌斯范数(Frobenius norm)是矩阵元素平方和的平方根
在深度学习中,我们经常试图解决优化问题:?最大化分配给观测数据的概率;?最小化预测和真实观测之间的距离。 用向量表示物品(如单词、产品或新闻文章),以便最小化相似项目之间的距离,最大化不同项目之间的距离。 通常,目标,或许是深度学习算法最重要的组成部分(除了数据),被表达为范数。 四、微分
绘制函数u=f(x)及其在x=1处的切线y=2x?3,其中系数2是切线的斜率
? ? ?偏导数,梯度,链式法则 五、自动求导? ? ?深度学习框架通过自动计算导数,即自动求导(automatic differentiation),来加快这项工作。实际中,根据我们设计的模型,系统会构建一个计算图(computational graph),来跟踪计算是哪些数据通过哪些操作组合起来产生输出。自动求导使系统能够随后反向传播梯度。 这里,反向传播(backpropagate)只是意味着跟踪整个计算图,填充关于每个参数的偏导数。? ? ? 标量链式法则拓展到向量链式法则 ? ?https://my.oschina.net/amyhome/blog/691317向量求导
? tensor([0., 1., 2., 3.])
tensor(28., grad_fn=<MulBackward0>)
tensor([ 0., 4., 8., 12.])
tensor([True, True, True, True]) https://zhuanlan.zhihu.com/p/109755675 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 15:48:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |