What is tensor?

张量是具有统一类型(称为 dtype)的多维数组
张量与 np.arrays 有一定的相似性。


所有张量都是不可变的:永远无法更新张量的内容,只能创建新的张量。
image.png

image.png

Types of Tensors

张量通常包含浮点型和整型数据,但是还有许多其他数据类型,包括:

  • 复杂的数值
  • 字符串

常见类型

  • Variable(可改变)

  • Constant(不可变)
  • Placeholder
  • Sparse Tensor

tf.Tensor 基类要求张量是“矩形”——也就是说,每个轴上的每一个元素大小相同。
但是,张量有可以处理不同形状的特殊类型。

  • 不规则张量(参阅下文中的 RaggedTensor)
  • 稀疏张量(参阅下文中的 SparseTensor)

使用 Tensor.dtype 属性可以检查 tf.Tensor 的数据类型。

相关术语

形状(shape):张量的每个维度的长度(元素数量)。
秩(rank):张量的维度数量。标量的秩为 0,向量的秩为 1,矩阵的秩为 2。
轴或维度(axis/dimension):张量的一个特殊维度。
大小:张量的总项数,即乘积形状向量

image.png

索引

TensorFlow 遵循标准 Python 索引规则(类似于在 Python 中为列表或字符串编制索引)以及 NumPy 索引的基本规则。

  • 索引从 0 开始编制
  • 负索引表示按倒序编制索引
  • 冒号 : 用于切片 start:stop:step

操作形状

  1. # Shape returns a `TensorShape` object that shows the size on each dimension
  2. var_x = tf.Variable(tf.constant([[1], [2], [3]]))
  3. print(var_x.shape)
  4. # You can convert this object into a Python list, too
  5. print(var_x.shape.as_list())
  6. #通过重构可以改变张量的形状。重构的速度很快,资源消耗很低,因为不需要复制底层数据。
  7. reshaped = tf.reshape(var_x, [1, 3])
  8. #展平向量,则可以看到它在内存中的排列顺序。
  9. print(tf.reshape(rank_3_tensor, [-1]))

一般来说,tf.reshape 唯一合理的用途是用于合并或拆分相邻轴(或添加/移除 1)
重构可以处理总元素个数相同的任何新形状,但是如果不遵从轴的顺序,则不会发挥任何作用。


利用 tf.reshape 无法实现轴的交换,要交换轴,您需要使用tf.transpose

image.png
image.png

What is TensorFlow?

TensorFlow 是一个端到端开源机器学习平台 ,借助 TensorFlow,初学者和专家可以轻松地创建机器学习模型。

了解 TensorFlow 和 Keras 的关系

TensorFlow 的高阶 API 基于 Keras API 标准,用于定义和训练神经网络。Keras 通过用户友好的 API 实现快速原型设计、先进技术研究和生产。