tensorflow learning
0 语句积累篇
# 查看是否启用eager execution,若启用则返回True
tf.executing_eagerly()
# 矩阵相乘
m = tf.matmul(x, x)
# 矩阵对应位置元素相乘
c = np.multiply(a, b)
# 创建常量
a = tf.constant([[1, 2],
[3, 4]])
# 定义变量并初始化为[1.0]
w = tf.Variable([[1.0]])
# 在线抓取mnist数据集
(mnist_images, mnist_labels), _ = tf.keras.datasets.mnist.load_data()
# 下载数据集。将 with_info 设置为 True 会包含整个数据集的元数据,其中这些数据集将保存在 info 中。
datasets, info = tfds.load(name='mnist', with_info=True, as_supervised=True)
mnist_train, mnist_test = datasets['train'], datasets['test']
# 对数据集进行切片分组
dataset = tf.data.Dataset.from_tensor_slices()
dataset = tf.data.Dataset.from_tensor_slices(
(tf.cast(mnist_images[...,tf.newaxis]/255, tf.float32),
tf.cast(mnist_labels,tf.int64)))
# tf.cast() 的作用是将mnist_images原来的数据类型(uint8)转化为指定类型。
# mnist_images[…,tf.newaxis] 是指在mnist_images(维度为(60000, 28, 28))后面再加一个维度,即变成(60000, 28, 28, 1)。省略号表示的是很多个冒号,也就是说[…,tf.newaxis]即为[:, :, :, tf.newaxis]。
dataset = dataset.shuffle(1000).batch(32)
# shuffle:打乱
# batch:分批次,每批32个数据
1 tensorflow基础知识
1.0 tf2.0介绍
底层框架:
training+deployment:训练和部署两部分,训练完之后保存模型,可以部署在服务器端、网页端、移动端等等。
准备数据–构建模型–运行调试–(分布式)训练–保存模型–(跨平台)部署
云端配置的优势:
- 每台机器都是统一规格的,比较好管理
- 没有机器损耗问题
- GPU等硬件设施配置问题不用考虑
1.1 Eager Execution
- TensorFlow 的 Eager Execution 是一种命令式编程环境,可立即评估运算,无需构建计算图:运算会返回具体的值,而非构建供稍后运行的计算图。
- 直观的界面
- 使用 Python 而非计算图控制流
注:在 Tensorflow 2.0 中,默认启用 Eager Execution。
1.2 性能测试工具 cProfile
- 会统计每个函数的总运行时间(包括子函数)、除自函数外的运行时间、运行次数、每次平均运行时间。
- 默认情况下,只统计主线程的运行时间。
- 如果想要统计多线程/进程的运行时间,需要对每个线程/进程分别执行cProfile的API。
1.3 自动求导机制
tf.GradientTape()
是一个自动求导的记录器。只要进入了 with tf.GradientTape() as tape
的上下文环境,则在该环境中计算步骤都会被自