What is tensor?
张量是具有统一类型(称为 dtype)的多维数组。
张量与 np.arrays 有一定的相似性。
所有张量都是不可变的:永远无法更新张量的内容,只能创建新的张量。
Types of Tensors
张量通常包含浮点型和整型数据,但是还有许多其他数据类型,包括:
- 复杂的数值
- 字符串
常见类型
Variable(可改变)
- Constant(不可变)
- Placeholder
- Sparse Tensor
tf.Tensor 基类要求张量是“矩形”——也就是说,每个轴上的每一个元素大小相同。
但是,张量有可以处理不同形状的特殊类型。
- 不规则张量(参阅下文中的 RaggedTensor)
- 稀疏张量(参阅下文中的 SparseTensor)
使用 Tensor.dtype
属性可以检查 tf.Tensor
的数据类型。
相关术语
形状(shape):张量的每个维度的长度(元素数量)。
秩(rank):张量的维度数量。标量的秩为 0,向量的秩为 1,矩阵的秩为 2。
轴或维度(axis/dimension):张量的一个特殊维度。
大小:张量的总项数,即乘积形状向量
索引
TensorFlow 遵循标准 Python 索引规则(类似于在 Python 中为列表或字符串编制索引)以及 NumPy 索引的基本规则。
- 索引从 0 开始编制
- 负索引表示按倒序编制索引
- 冒号 : 用于切片 start:stop:step
操作形状
# Shape returns a `TensorShape` object that shows the size on each dimension
var_x = tf.Variable(tf.constant([[1], [2], [3]]))
print(var_x.shape)
# You can convert this object into a Python list, too
print(var_x.shape.as_list())
#通过重构可以改变张量的形状。重构的速度很快,资源消耗很低,因为不需要复制底层数据。
reshaped = tf.reshape(var_x, [1, 3])
#展平向量,则可以看到它在内存中的排列顺序。
print(tf.reshape(rank_3_tensor, [-1]))
一般来说,tf.reshape
唯一合理的用途是用于合并或拆分相邻轴(或添加/移除 1)
重构可以处理总元素个数相同的任何新形状,但是如果不遵从轴的顺序,则不会发挥任何作用。
利用 tf.reshape
无法实现轴的交换,要交换轴,您需要使用tf.transpose
。
What is TensorFlow?
TensorFlow 是一个端到端开源机器学习平台 ,借助 TensorFlow,初学者和专家可以轻松地创建机器学习模型。
了解 TensorFlow 和 Keras 的关系
TensorFlow 的高阶 API 基于 Keras API 标准,用于定义和训练神经网络。Keras 通过用户友好的 API 实现快速原型设计、先进技术研究和生产。