导入
要运行程序,你需要导入模块。
从 2.0 开始,默认启用急切模式执行。这提供了一个更具交互性的前端部分。
来自 , ,
作为 tf
1
张量是一个多维数组。像 NumPy 对象一样,tf.对象具有数据类型和形状。此外,tf.可以驻留在加速器内存中(如 GPU)。提供丰富的操作库(tf.add、tf.、tf..inv等),消耗和生成tf.。这些操作会自动转换类型,例如:
打印(tf.add(1,2))
打印(tf.add([3,8], [2,5]))
打印(tf.(6))
打印(tf.([7,8,9]))
打印(tf.(3)+tf.(4)))
tf.(3, shape=(), dtype=int32)
tf.([ 5 13], shape=(2,), dtype=int32)
tf.(36, shape=(), dtype=int32)
tf.(24, shape=(), dtype=int32)
tf.(25, shape=(), dtype=int32)
每个都有一个形状和类型
x = tf.([[3], [6]], [[2]])
打印(x)
打印(x.shape)
打印(x.dtype)
tf.(
[[6]
[12]], shape=(2, 1), dtype=int32)
(2, 1)
NumPy 数组和 tf.是:
张量可以由加速器内存(例如 GPU、TPU)支持。
张量是不可变的。
NumPy 兼容性
在 tf. NumPy 很简单:
操作自动将 NumPy 转换为。
NumPy 操作会自动转换为 NumPy。
使用 .numpy() 方法将张量显式转换为 NumPy。这些转换通常很容易,因为如果可能的话,array 和 tf.共享底层内存表示。然而,共享底层表示并不总是可能的,因为 tf.可以托管在 GPU 内存中,而 NumPy 数组始终由主机内存支持,并且转换涉及从 GPU 复制到主机内存。
numpy 作为 np
= np.ones([2,2])
= tf.(, 36)
打印()
#使用np.add进行加法操作
打印(np.add(, 1))
# 转换为numpy类型
打印(.numpy())
tf.(
[[36. 36.]
[36. 36.]], shape=(2, 2), dtype=)
[[37. 37.]
[37. 37.]]
[[36. 36.]
[36. 36.]]
2 GPU 加速
使用 GPU 进行计算可以加快许多操作。在没有任何注释的情况下,它会自动决定是使用 GPU 还是 CPU 进行操作 – 如有必要,在 CPU 和 GPU 内存之间复制张量。操作产生的张量通常由执行操作的设备的内存支持,例如:
x = tf..([3, 3])
print(‘是 GPU :’)
打印(tf.test.())
print(‘是on gpu #0:’)
打印(x..(‘GPU:0’))
是 GPU:
错误
是在 GPU #0 上:
错误
设备名称
。属性提供托管张量内容的设备的完全限定字符串名称。该名称编码了许多细节,例如正在执行程序的主机的网络地址标识符以及该主机中的设备。这是程序的分布式执行所必需的。如果张量在主机的第 N 个 GPU 上,则字符串以 GPU: 结尾。
显式设备放置()
中,放置是指如何分配(放置)设备以执行各种操作。如上所述,如果没有提供明确的指导,则自动确定执行操作的设备,并在需要时将张量复制到该设备。但是,可以使用 tf. 明确地将操作放置在特定设备上。上下文管理器,例如:
时间
定义(x):
开始 = time.time()
for循环在范围内(10):
tf.(x, x)
= time.time() – 开始
print(’10 循环:{:0.2}ms’.(1000*))
#强制使用CPU
print(‘在 CPU 上:’)
与 tf.(‘CPU:0’):
x = tf..([1000, 1000])
#使用验证当前是否为CPU0
x..(‘CPU:0’)
(x)
#如果有GPU,则强制使用GPU
如果 tf.test.():
print(‘在 GPU 上:’)
使用 tf..(‘GPU:0’):
x = tf..([1000, 1000])
#使用断言验证当前是GPU0
x..(‘GPU:0’)
(x)
在 CPU 上:
10 个循环:1.2e+02ms
3 个数据集
本部分使用 tf.data 构建管道。 API 为模型提供数据。 tf.data.API 用于从简单、可重用的部分构建高性能、复杂的输入管道,这些部分将为模型的训练或评估循环提供动力。
创建源数据集时无锡人流量是多少
使用工厂函数之一(例如 .、.)或使用从文件中读取的对象(例如 .)创建源数据集。有关详细信息,请参阅数据集指南。
#从列表中获取
= tf.data..([6,5,4,3,2,1])
#创建csv文件
_, = .()
打印()
with open(, ‘w’) as f:
f.write(“””第一行
第 2 行
第 3 行”””)
# 获取数据集实例
= tf.data.()
/tmp/
应用转换
使用映射、批处理等转换函数将转换应用于数据集记录。
= .map(tf.).(2).batch(2)
= .batch(2)
迭代
tf.数据。对象支持迭代循环记录:
打印(’:’中的元素)
对于 x :
打印(x)
#从文件中读取的对象创建的数据源
打印(’中的元素:’)
对于 x :
打印(x)
中的元素
:
tf.([36 25], shape=(2,), dtype=int32)
tf.([16 9], shape=(2,), dtype=int32)
tf.([4 1], shape=(2,), dtype=int32)
中的元素
:
tf.([b’Line 1′ b’Line 2′], shape=(2,), dtype=)
tf.([b’Line 3′], shape=(1,), dtype=)
暂无评论内容