TensorFlow2.0基础API详解:常量、运算、 ragged与sparse tensor及自定义函数
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进行深度学习项目十分有帮助。
2021-03-10 上传
2020-12-21 上传
2021-03-07 上传
2021-04-06 上传
2021-03-08 上传
2021-12-02 上传
weixin_38745434
- 粉丝: 14
- 资源: 922
最新资源
- lang-3-Projet:语言创作
- mybatis实体注释为中文
- node-imageinfo:一个 node.js 包,返回有关图像或 Flash 文件的信息,例如类型、尺寸等
- 改进的存储
- gunterx
- CSGOContainerStats:Python脚本,用于分析打开的csgo容器的Steam库存历史记录并将结果写入文本文件
- creative:使用HTMLCSS和JAVASCRIPT的基本注册表单网页
- chat_AntDERN_stack
- Sb3Generator.github.io
- PythonKeylogger
- TestProoo:s
- 演示通过easyExcel来导出excel数据
- rigel-social:一个社交媒体网站,用户可以在其中发布、点赞、评论和关注、取消关注。
- super-i18n:jquery插件,用于i18n翻译网站多种语言
- TwoDicePig:将两个骰子猪游戏制作成一个Android应用程序(于2020年1月制作,但于2020年8月上传)
- hljs-enhance:to在Highlight.js中添加了一些额外的东西