本文介绍: (1)首先,我们不想总是不必要地分配内存。在机器学习中,我们可能有数百兆的参数,并且在一秒内多次更新所有参数。(2)如果我们不原地更新,其他引用仍然会指向旧的内存位置,这样我们的某些代码可能会无意中引用旧的参数。例如,如果我们用Y = X + Y,我们将取消引用Y指向的张量, 而是指向新分配的内存处的张量。1. 通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状;可以指定范围以包含第一个元素和最后一个之前的元素。第一个元素 的索引是0,最后一个元素索引是‐1;
一、数据操作
1、基础
2、运算符
在相同形状的两个张量上执行按元素操作
3、广播机制
在不同形状的两个张量上执行操作
1. 通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状;
2. 对生成的数组执行按元素操作。
4、索引和切片
张量中的元素可以通过索引访问
第一个元素 的索引是0,最后一个元素索引是‐1;
可以指定范围以包含第一个元素和最后一个之前的元素。
5、节省内存
运行一些操作可能会导致为新结果分配内存。
例如,如果我们用Y = X + Y,我们将取消引用Y指向的张量, 而是指向新分配的内存处的张量。
这可能是不可取的,原因有两个:
(1)首先,我们不想总是不必要地分配内存。在机器学习中,我们可能有数百兆的参数,并且在一秒内多次更新所有参数。通常情况下,我们希望原地执行这些更新;
执行原地操作非常简单,使用切片表示法将操作的结果分配给先前分配的数组。
如果在后续计算中没有重复使用X,可以使用X[:] = X + Y或X += Y来减少操作的内存开销。
6、转换为其他Python对象
张量tensor转换为数组张量numpy很容易,反之也同样容易。
两者之间的区别
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。