服装网站建设策划案苏州网站建设一站通
web/
2025/9/29 4:40:02/
文章来源:
服装网站建设策划案,苏州网站建设一站通,网销是做什么的,设计本app下载深度学习中最常用的数据是张量#xff0c;对张量进行操作是进行深度学习的基础。以下是对张量进行的一些操作#xff1a;
首先我们需要先导入相关的张量库torch。 元素构造#xff08;初始化#xff09;
使用arange创造一个行向量#xff0c;也就是0轴#xff08;0维对张量进行操作是进行深度学习的基础。以下是对张量进行的一些操作
首先我们需要先导入相关的张量库torch。 元素构造初始化
使用arange创造一个行向量也就是0轴0维。 默认是按顺序创建从0开始元素类型默认是整数当然也可以指定为浮点数。比如:可以使用张量shape属性来访问张量沿每个轴的长度的形状shape。 当然指的是形状也可能不只是一个维度。我们想知道张量中元素的总个数也就是shape中所有元素的乘积可以检查它的大小size。要想改变一个张量的形状但是不改变张量的大小可以使用reshape函数这个函数是将张量进行维度转化。直接见例子 值得注意的是这里的转化要求大小不变比如我们的张量中一共有9个元素那么我们只能转化为1*9或者9*1不能使之转化为2*4.5等。当然我们当然不是必须要计算出来每个维度的信息如果我们需要转化为两个维度而第一个维度已知是1那么第二个维度可以直接用-1表示另一个维度会自动被计算出来我们可以省略一个维度。最多省略一个维度。维度的转化可以进行多维。有时候我们需要全0或者全1的张量torch库中提供的有相应的函数。有时候我们需要通过某个概率分布中随机采样来获得元素的值当我们构造数组来作为神经网络中的参数的时候我们通常随机初始化参数的值。以下是一个使用正态分布来初始化数组的代码这里我们使用的是均值为0标准差为1的正态分布。 随机化的结果会因为每次运行的不同而有所不同。
当然最简单的构造方法就是直接构造张量。这里我们使用tensor来直接构造。
运算符
运算中最常见的操作是加减乘除。在上述结果中除法运算默认保留四位小数。 幂运算我们在大学线性代数中没有接触其实就是相应位置的幂运算。我们也可以把多个张量剪切到一起。连接concatenate对应的函数是cat。 这里dim是维度的意思0维即是行1维即是列同理递推。 显然维度不能超出范围。还能判断对应位置元素是否相等直接使用判断结果可不是返回一个数值0或1而是返回一个张量该张量是对应每个位置比较的结果。 相同的问题对于判断两个张量是否相等的运算首先要确保这两个张量的shape形状要统一。
将张量中所有元素求和会得到一个新的元素单张量也可以认为是维度是1。
广播机制
广播机制就是通过适当复制元素来扩展一个或者两个数组以便在转化之后两个数组具有相同的形状。但是大多数情况下我们只会沿着维度为1 的轴进行广播。 在下图中a的形状是2*2没有维度是1的轴无法进行广播由于无法转化维度导致不能与b相加。
接下来我们尝试用三阶张量替换广播机制中按元素操作的两个张量看看是否符合预期。 答案是肯定的但是我们首先要确保每个维度上都必须有至少一个1。用于进行广播。
索引和切片
用于读取元素 如图-1表示最后一个元素张量经过reshape处理后有三个元素reshape可以这样理解第一个参数表示元素个数后面的所有参数组成一个元素。 第二个输出输出的是[1:3)的元素左边参数是闭区间右边参数是开区间。即选取 1和2。分别是第二个元素和第三个元素元素的索引是从0开始的。
更改元素 在这里我们使第二行第三列的元素更改为0最后一行最后一列的元素也更改为0。 当然当我们进行有规律的大规模连续更改的时候我们使用切片。 “”表示默认第一个参数表示是默认所有行第二个参数表示是默认所有列。 这样我们就指定2,3行所有列进行更改。
节省内存
首先思考一个问题xxy和xy是否相同 在结果上时相同的但是在内存分配上却不相同第一个式子是为x重新分配一个内存来存储x张量第二个式子是在原有x张量内存的基础上进行更改。我们可以用id函数来可视化注意这里不能使用torch.ones(3,4)来创建。只能使用ones_like来创建或者是zero_like来创建。
为什么说重新分配内存是不可取的 首先在机器学习中我们可能有数百兆的参数并且在一秒内多次更新参数如果不原地执行这些更新的话会占用大量的内存。 其次如果不进行原地更新其他的引用仍然会指向旧的内存地址这样我们的代码可能无意间引用旧的参数。 当然也可以使用a[:]expression来原地更新。比如 有趣的是这里可以使用torch.ones或者torch.zeros来创建张量并且进行操作的时候不报错。
转化为其他类型的Python对象
将深度学习框架pytorch转化为Numpy张量对象ndarray很容易反之也很容易。 当然张量也可以转化为标量。仅适用于大小为1的张量 总结
深度学习存储和操作数据的主要接口是张量n维数组它提供了各种功能包括基本数学运算广播索引切片内存节省和转化为其他Python对象。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83709.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!