Tensorflow基础(2)---创建张量

张量是TensorFlow中数据的载体。
Tensorflow中的“Tensor”表示张量,其实就是多维数组。

  • Python中的列表list
  • NumPy中的数组对象ndarray

他们都可以作为数据的载体

区别:

1. Python列表(list)
	 * 元素可以使用不同的数据类型,可以嵌套
   	 * 在内存中不连续存放,是一个动态的指针数组
	 * 读写效率低,占用内存空间大 
 	 * 不适合做数值计算
2. NumPy数组(ndarray)
	 * 元素数据类型相同
  	 * 每个元素在内存中占用的空间相同,存储在一个连续的内存区域中
	 * 存储空间小,读取和写入速度快
	 * 在CPU中运算,不能够主动检测、利用GPU进行运算
3.TensorFlow张量(Tensor):
	 * 可以高速运行于GPU和TPU之上
	 * 支持CPU、嵌入式、单机多卡和多机多卡等多种计算方法
	 * 高速的实现神经网络和深度学习中的算法

1.创建Tensor对象

张量由Tensor类实现,每个张量都是一个Tensor对象

tf.constant()函数:创建张量
	tf.constant(value,dtype,shape)
	value:数字/Python列表/NumPy数组
	dthpe:元素的数据类型
	shape:张量的形状

注:本节代码均使用JupyterNoteBook完成

tf.constant([1,2],[3,4])

# 自定义数据类型
tf.constant(1.0,dtype=tf.float64)

参数为NumPy数组
numpy创建浮点数数组时,默认的浮点型是64位浮点数。
当使用NumPy数组创建张量时,TensorFlow会接受数组元素的数据类型,使用64位浮点数保存数据。

由于计算机处理32位浮点数的速度远快于64位浮点数,所以建议在使用numpy数组创建张量时,将数据类型改为32位。

# tf.convert_to_tensor()函数
# tf.convert_to_tensor(数组/列表/数字/布尔型/字符串)
na = np.arange(12).reshape(3,4)
ta = tf.convert_to_tensor(na)
type(na)
type(ta)

# tf.is_tensor()函数 判断是否为张量,输出为布尔值
tf.is_tensor(ta)
tf.is_tensor(na)

# isinstance()函数
isinstance(ta.tf.Tensor)
isinstance(na.tf.ndarray)

创建特殊张量

# tf.zero(shape,dtype = tf.float32)创建全零张量 数据类型默认为float32
tf.zero([5])
# tf.ones(shape,dtype = tf.float32)创建全1张量  数据类型默认为float32
tf.ones(shape = (2,1))
tf.ones([6,6])
# tf.fill(dims,value)函数,创建元素值都相同的张量。
# dims表示形状,value表示值
tf.fill(dims=[3,4],value=5)
# tf.constant()函数,创建元素值都相同的张量。
tf.constant(value=5,shape=[3,4])# 与fill函数一致

# 创建随机数张量--正态分布
# tf.random.normal(shape,mean,stddev,dtype)
# shape:形状  mean:均值 stddev:标准差 
# 当均值和标准差省略时,默认为标准正态分布。
tf.random.normal(shape = [3,3],mean = 2,stddev = 3)

# 创建随机数张量--截断正态分布
# tf.random.truncated.normal(shape,mean,stddev,dtype)
# 返回一个截断的正太分布
# 截断的标准是2倍的标准差

# 设置随机种子--tf.random.set_seed()函数
tf.random.set_seed(8)
tf.random.normal(shape = [2,2])

# 创建均匀分布张量--tf.random.uniform()函数
# tf.random.uniform(shape,minval,maxval,dtype)
# [最小值,最大值) 前闭后开,不包括最大值
tf.random.uniform(shape=(3,3),minval=0,maxval=10,dtype='int32')

# 随机打乱--tf.random.shuffle()函数
x = tf.constant([[1,2],[3,4],[5,6]])
tf.random.shuffle(x)

y = [1,2,3,4,5,6]
tf.random.shuffle(y)

z = np.arange(5)
tf.random.shuffle(z)

# 创建序列--tf.range()函数
# tf.range(start,limit,delta=1,dtype) 产生一个整型的数字序列
# start:起始数字 limit:结束数字  delta:步长 
# [start,limit) 前闭后开
# 除了limit 剩下都可以省略
tf.range(10)
tf.range(10,delta=2)
tf.range(1,10,2)

在这里插入图片描述

Tensor对象的属性

ndim:维度 ( x.ndim)
shape:形状 (x.shape)
dtype:数据类型 (x.dtype)

在TensorFlow中,所有的运算都是在张量之间进行的
NumPy数组仅仅是作为输入和输出来使用
张量可以运行于 CPU,也可以运行于GPU和TPU
而NumPy数组只能在CPU中运行

课程链接在此

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值