TensorFlow 2学习笔记:张量基础

一、TensorFlow2.0

TensorFlow 2.0推荐使用Keras 构建和学习神经网络 。


1. 导入

从TensorFlow 2.0默认情况下会启用eager模式执行。 这为TensorFlow提供了一个更加互动的前端节。

登录后复制

from __future__ import absolute_import, division, print_functionimport tensorflow as tf1.2.


2. 张量


i. 张量与ndarray互转

张量(TF.tensors)是TensorFlow的数据类型,类似NumPy ndarry,可以常驻Gpu中进行各种操作。
示例:

登录后复制

from __future__ import absolute_import, division, print_functionimport tensorflow as tfprint(tf
.add(1, 2))  # tf.Tensor(3, shape=(), dtype=int32)print(tf.add([3, 8], [2, 5]))  
# tf.Tensor([ 5 13], shape=(2,), dtype=int32)print(tf.square(6))  
# tf.Tensor(36, shape=(), dtype=int32)print(tf.reduce_sum([7, 8, 9]))  
# tf.Tensor(24, shape=(), dtype=int32)print(tf.square(3) + tf.square(4))  
# tf.Tensor(25, shape=(), dtype=int32)1.2.3.4.5.6.7.8.9.
  • 张量是不可变的
  • 张量支持GPU运算

张量与Numpy ndarrays可互相转换,TensorFlow操作自动将NumPy ndarrays转换为Tensors。
NumPy操作自动将Tensors转换为NumPy ndarrays,它们会共享内存。但如果Tensors在GPU的时候不能共享。


2. 示例

登录后复制

from __future__ import absolute_import, division, 
print_functionimport tensorflow as tfimport numpy as npndarray = np.ones([2,2])tensor = tf
.multiply(ndarray, 36)print(tensor)'''tf.Tensor([[36. 36.] [36. 36.]], shape=(2, 2), dtype=float64)'''
# 用np.add对tensorflow进行加运算print(np.add(tensor, 1))'''[[37. 37.] [37. 37.]]'''
# 转换为numpy类型print(tensor.numpy())'''[[36. 36.] [36. 36.]]'''1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.
18.19.20.21.22.23.24.


3. GPU加速

使用GPU进行计算可以加速许多TensorFlow操作。 如果没有任何注释,TensorFlow会自动决定是使用GPU还是CPU进行操作 - 如有必要,可以复制CPU和GPU内存之间的张量。 由操作产生的张量通常由执行操作的设备的存储器支持,例如:

登录后复制

from __future__ import absolute_import, division, print_functionimport tensorflow 
as tfimport numpy as npx = tf.random.uniform([3, 3])print('Is GPU availabel: %s' %  tf
.test.is_gpu_available())print('Is the Tensor on gpu #0: %s' % x.device.endswith('GPU:0'))print(x.device)  
'''/job:localhost/replica:0/task:0/device:CPU:0'''1.2.3.4.5.6.7.8.9.10.


demo:

登录后复制

from __future__ import absolute_import, division, print_functionimport tensorflow as tfimport numpy as 
npimport timedef time_matmul(x):    start = time.time()    for loop in range(10):        
tf.matmul(x, x)    result = time.time() - start    print('10 loops: {:0.2}ms'.format(1000*result))    
# 强制使用CPUprint('On CPU:')with tf.device('CPU:0'):    x = tf.random.uniform([1000, 1000])    
# 使用断言验证当前是否为CPU0    assert x.device.endswith('CPU:0')    time_matmul(x)    
# 如果存在GPU,强制使用GPUif tf.test.is_gpu_available():    print('On GPU:')    with tf
.device.endswith('GPU:0'):        x = tf.random.uniform([1000, 1000])    
# 使用断言验证当前是否为GPU0    assert x.device.endswith('GPU:0')    
time_matmul(x)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.


4. 创建数据集

登录后复制

# 从列表中获取tensords_tensors = tf.data.Dataset.from_tensor_slices([6,5,4,3,2,1])
# 创建csv文件import tempfile_, filename = tempfile.mkstemp()print(filename)with open(filename, 'w') 
as f:    f.write("""Line 1Line 2Line 3""")# 获取TextLineDataset数据集实例ds_file = tf
.data.TextLineDataset(filename)1.2.3.4.5.6.7.8.9.10.11.12.13.


应用转换

使用map,batch和shuffle等转换函数将转换应用于数据集记录。

登录后复制

ds_tensors = ds_tensors.map(tf.square).shuffle(2).batch(2)ds_file = ds_file.batch(2)1.2.


迭代

登录后复制

print('ds_tensors中的元素:')for x in ds_tensors:    print(x)
# 从文件中读取的对象创建的数据源print('\nds_file中的元素:')for x in ds_file:    print(x)1.2.3.4.5.6.7.

输出:

登录后复制

ds_tensors中的元素:tf.Tensor([36 16], shape=(2,), dtype=int32)tf.Tensor([25  4], shape=(2,), dtype=int32)tf
.Tensor([1 9], shape=(2,), dtype=int32)ds_file中的元素:tf.Tensor([b'Line 1' b'Line 2'], shape=(2,), 
dtype=string)tf.Tensor([b'Line 3'], shape=(1,), dtype=string)1.2.3.4.5.6.7.8.




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空