Tensorflow:张量

Tensorflow:张量,第1张

Tensorflow版本:V2.8.0

  Tensorflow中所有的运算 *** 作都是基于张量进行的。Tensorflow中的张量Tensor是具有统一类型的多维数组。这篇博文主要介绍张量的创建及基础 *** 作。

1. 张量的创建 1.1 tf.constant()方法

  tf.constant()是一种常用的张量创建方法。具体代码如下:

这里有一点要注意,不同数值精度的张量不能直接进行计算,强制转化(tf.cast)之后才可以进行计算。具体如下:

1.2 创建特殊张量

  Tensorflow中有一些特殊的张量,比如全0或全1张量、自定义数值张量、符合特定分布的张量以及序列型张量。

  • 创建全0、全1或自定义数值的张量。这种方法创建的张量中的元素值都是一样的。
  • 创建符合特定分布的张量。
1.3 待优化张量

  前述使用tf.constant()方法创建的张量其实是常量张量,是不可变的张量。但在神经网络模型的训练中,尤其是 W W W b b b,需求不断地调整,这个时候再使用不可变张量就不合适了,所以Tensorflow中又提出了另一类型的张量:tf.Variable。其具体定义如下:

1.4 其他tf.xx_initializer()类方法

  Tensorflow中有几个以initializer结尾的方法,这几个方法的使用有一些特殊,因为这些方法得到的并不是张量,而是一个可调用对象。下面以tf.random_uniform_initializer()为例进行说明。具体如下:

1.5 其他类型的张量

  除了数值型的张量外,还可以创建布尔类型和字符串类型的张量。tf.strings模块提供了常见的字符串类型的工具函数,具体如下:

2. 基础 *** 作

  Tensorflow中张量的基础 *** 作很多都与Python中的Numpy类似,比如切片索引等。所以这里只会关注与Numpy中不同的部分。

2.1 维度变换

  Tensorflow中基本的维度变换 *** 作主要有以下几种:改变视图reshape(这里不介绍了)、插入新维度expand_dims、删除维度squeeze、交换维度transpose、复制数据tile等。具体 *** 作如下:

  • 维度变换

    这里要注意,tf.expand_dims()和tf.squeeze()方法可以导致张量维度shape(又叫视图)的改变,但不会导致数据的改变(张量的总数据元素个数及数据在内存中的存储顺序都不会改变),改变的仅仅是数据的理解方式。但是tf.tanspose()方法会改变张量中数据元素的存储顺序。
  • 复制数据

    Tensorflow中也有类似numpy的广播机制,所以复制数据步骤一般不需要人工 *** 作。但是广播机制并不会对数据真正对数据进行复制,节省了计算资源。
参考文献
  1. https://tensorflow.google.cn/guide/tensor
  2. Tensorflow深度学习

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/885659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存