TensorFlow学习日记34

1.tf.config.experimental
解析:
[1]get_device_policy
[2]get_memory_growth
[3]get_synchronous_execution
[4]get_virtual_device_configuration
[5]get_visible_devices
[6]list_logical_devices
[7]list_physical_devices
[8]set_device_policy
[9]set_memory_growth
[10]set_synchronous_execution
[11]set_virtual_device_configuration
[12]set_visible_devices

2.设置GPU显存使用方式
解析:

# 获取GPU设备列表
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
    try:
        for gpu in gpus:
            # 设置GPU为增长式占用
            tf.config.experimental.set_memory_growth(gpu, True)
    except RuntimeError as e:
        print(e)

3.TensorFlow自动梯度
解析:

import tensorflow as tf
# 创建4个张量,并赋值
a = tf.constant(1.)
b = tf.constant(2.)
c = tf.constant(3.)
w = tf.constant(4.)
# 构建梯度环境
with tf.GradientTape() as tape:
    # 将w加入梯度跟踪列表
    tape.watch([w])
    # 构建计算过程,函数表达式
    y = a * w**2 + b * w + c
# 自动求导
[dy_dw] = tape.gradient(y, [w])
# 打印出导数
print(dy_dw)

输出结果,如下所示:

tf.Tensor(10.0, shape=(), dtype=float32)

[1]watch(tensor):确保某个tensor被tape追踪。其中,tensor表示一个Tensor或者一个Tensor列表。

4.tf.GradientTape
解析:构造函数为__init__(persistent=False,watch_accessed_variables=True)
[1]persistent:布尔值,用来指定新创建的gradient tape是否是可持续性的。默认是False,意味着只能够调用一次gradient()函数。
[2]watch_accessed_variables:布尔值,表明这个gradien tape是不是会自动追踪任何能被训练[trainable]的变量。默认是True。要是为False的话,意味着需要手动去指定想追踪的那些变量。
[3]在使用TensorFlow自动求导功能计算梯度时,需要将前向计算过程放置在tf.GradientTape()环境中,从而利用GradientTape对象的gradient()方法自动求解参数的梯度,并利用optimizers对象更新参数。

5.tf.reduce_xxx()方法
解析:
[1]tf.reduce_sum():计算tensor指定轴方向上的所有元素的累加和。
[2]tf.reduce_mean():计算tensor指定轴方向上的所有元素的平均值。
[3]tf.reduce_max():计算tensor指定轴方向上的各个元素的最大值。
[4]tf.reduce_all():计算tensor指定轴方向上的各个元素的逻辑和[and运算]。
[5]tf.reduce_any():计算tensor指定轴方向上的各个元素的逻辑或[or运算]。

6.张量
解析:所有维度数dim>2的数组统称为张量,张量的每个维度也作轴,一般维度代表了具体的物理含义。在TensorFlow中,为了表达方便,一般把标量、向量、矩阵也统称为张量,不作区分。

7.tf.Tensor中的id
解析:id是TensorFlow中内部索引对象的编号。

8.tf.strings模块
解析:在tf.strings模块中,提供了常见的字符串类型的工具函数,如小写化lower()、拼接join()、长度length()、切分split()等。

9.TensorFlow中的dtype
解析:常用的精度类型有tf.int16、tf.int32、tf.int64、tf.float16、tf.float32、tf.float64等,其中tf.float64即为tf.double。

10.TensorFlow中的类型转换
解析:系统的每个模块使用的数据类型、数值精度可能各不相同,对于不符合要求的张量的类型及精度,需要通过tf.cast函数进行转换。

11.tf.Variable类型
解析:
[1]tf.Variable是TensorFlow增加的一种专门的数据类型来支持梯度信息的记录,该类型在普通的张量类型基础上添加了name,trainable等属性来支持计算图的构建。对于需要计算梯度并优化的张量,需要通过tf.Variable包裹以便TensorFlow跟踪相关梯度信息。
[2]张量的name和trainable属性是Variable特有的属性,name属性用于命名计算图中的变量;trainable属性表征当前张量是否需要被优化,创建Variable对象时是默认启用优化标志,可以设置trainable=False来设置张量不需要优化。

12.通过数组、列表对象创建张量
解析:tf.constant()和tf.convert_to_tensor()都能够自动的把Numpy数组或者Python
列表数据类型转化为Tensor类型。

13.tf.expand_dims(x,axis)
解析:通过该方法可以在指定的axis轴前插入一个新的维度。

14.tf.squeeze(x,axis)
解析:通过该方法可以删除维度,其中axis参数为待删除的维度的索引号。

15.tf.transpose(x,perm)
解析:通过该方法可以完成维度交换操作,其中参数perm表示新的顺序List。

16.tf.tile(x,multiples)
解析:通过该方法可以完成数据在指定维度上的复制操作,multiples分别指定了每个维度上面的复制倍数,对应位置为1表明不复制,为2表明新长度为原来长度的2倍,即数据复制一份,以此类推。

17.keras.datasets模块
解析:在TensorFlow中,keras.datasets模块提供了常用经典数据集的自动下载、管理、加载与转换功能,并且提供了tf.data.Dataset数据集对象,方便实现多线程[Multi-threading]、预处理[Preprocessing]、随机打散[Shuffle]和批训练[Training on Batch]等常用数据集的功能。

18.Keras
解析:Keras提供了一系列高层的神经网络相关类和函数,如经典数据集加载函数、网络层类、模型容器、损失函数类、优化器类、经典模型类等。

19.keras.Model和keras.layers.Layer类
解析:
[1]Layer类是网络层的母类,定义了网络层的一些常见功能,如添加权值、管理权值列表等。
[2]Model类是网络的母类,除了具有Layer类的功能,还添加了保存模型、加载模型、训练与测试模型等便捷功能。
[3]Sequential也是Model的子类,因此具有Model类的所有功能。

20.Keras模型保存与加载
解析:
[1]张量方式:network.save_weights(‘weights.ckpt’)。[load_weights(path)]
[2]网络方式:network.save(‘model.h5’)。[keras.models.load_model(path)]
[3]SavedModel方式:tf.saved_model.save(network,path)。[tf.saved_model.load]

21.keras.metrics模块
解析:Keras的测量工具的使用方法一般有4个主要步骤:新建测量器,写入数据,读取统计数据和清零测量器。

22.keras.applications模块
解析:在keras.applications模块中实现了常用的网络模型,如VGG系列、ResNet系列、DenseNet系列、MobileNet系列等等,只需要一行代码即可创建这些模型网络。

参考文献:
[1]Python异常处理:https://www.runoob.com/python/python-exceptions.html
[2]An overview of gradient descent optimization algorithms:https://ruder.io/optimizing-gradient-descent/
[3]

发布了364 篇原创文章 · 获赞 422 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/shengshengwang/article/details/104200763
今日推荐