TensorFlow2.0基础API详解:常量、运算、 ragged与sparse tensor及自定义函数

1 下载量 80 浏览量 更新于2024-09-01 收藏 98KB PDF 举报
"TensorFlow2.0学习笔记(二)" 在TensorFlow2.0中,我们主要探讨了基础运算API的使用,包括常量的创建、数值操作、字符串处理、Ragged Tensor和Sparse Tensor的使用,以及变量赋值、自定义损失函数和层、函数转换等高级特性。以下是对这些知识点的详细解释: 1. **常量创建与基本运算**: 使用`tf.constant`创建常量,例如`tf.constant(5)`或`tf.constant([1, 2, 3])`。之后,可以进行简单的数学运算,如加法、减法、乘法、平方等。还可以对张量进行转置和相乘。 2. **NumPy转换**: TensorFlow与NumPy之间的转换非常方便。可以使用`tf.convert_to_tensor`将NumPy数组转换为TensorFlow张量,反之则使用`numpy()`方法。 3. **字符串处理**: 在TensorFlow中,可以创建和处理字符串类型的变量。字符串通常以数组形式存在,可以通过`tf.strings`模块进行操作,如获取字符串长度。 4. **Ragged Tensor**: Ragged Tensors用于表示具有不规则形状的数据。使用`tf.ragged`模块创建和操作Ragged Tensors,可以进行拼接、转换为常规Tensor等操作。 5. **Sparse Tensor**: Sparse Tensor用于存储稀疏数据,即大部分元素为零的数据。它们比Ragged Tensor更节省空间。可以使用`tf.sparse`模块进行乘法和矩阵相乘等操作,并能转换为常规Tensor。 6. **变量赋值**: 在TensorFlow2.0中,变量的赋值变得更直接,可以直接通过`=`来完成。例如,`var = tf.Variable(0)`,然后`var.assign(5)`来更新变量的值。 7. **自定义损失函数**: 用户可以根据需求定义自己的损失函数,这在模型训练中十分常见。例如,可以定义一个均方误差损失函数`loss = tf.reduce_mean(tf.square(y_true - y_pred))`。 8. **自定义层**: 自定义层允许我们构建个性化的神经网络结构。可以继承`tf.keras.layers.Layer`类并重写`call`方法来定义层的行为,如线性层和Softmax层。 9. **tf.function**: `tf.function`是TensorFlow中的一个关键特性,它用于将Python函数转换为图执行的优化版本。这有助于提高性能。可以使用`@tf.function`装饰器进行转换,也可以通过`tf.function`函数来包装。 10. **函数参数设置**: 在`@tf.function`装饰器中,可以设置参数,如`input_signature`来限制输入的类型和形状,以确保函数的稳定性和可预测性。 11. **函数转换与保存**: `get_concrete_function`方法用于获取特定输入形状的函数实例,这个实例可以被保存和恢复,以便于模型的部署和复用。 12. **自动微分**: TensorFlow支持自动微分,用于计算梯度。可以使用`tf.GradientTape`来跟踪操作并计算梯度,这对于优化算法至关重要。可以实现一阶求导、二阶求导,甚至对变量求导并更新变量的值。 13. **递归函数中的求导**: TensorFlow也支持在递归函数中使用自动微分,这使得在复杂结构的模型中应用反向传播成为可能。 以上就是TensorFlow2.0学习笔记第二部分的主要内容,这些知识覆盖了从基础操作到高级特性的广泛范围,对于理解和应用TensorFlow进行深度学习项目十分有帮助。