我是靠谱客的博主 坚定蜻蜓,最近开发中收集的这篇文章主要介绍TensorFlow之张量创建张量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

张量

tensorflow中的基本数据是tensor(张量),可以看作是多维数组或列表类型。

张量的创建

使用tf.constant()创建张量,tf.constant()的语法格式为:

tf.constant(value,dtype,shape)

value用来指定数据,dtype用来显式地声明数据类型,shape用来指定数据的形状,

例如,要生成一个两行三列全为类型int32的数字2的张量,可以使用以下代码:

import tensorflow as tf
a = tf.constant(3,dtype=tf.int32,shape=(2,3))
print(a)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lg5SzWSs-1590935229161)(./img/1.png)]

但是由于tensor中的整型数据默认是tf.int32的,dtype可以不用显式地指定。

tensorflow所生成的张量都可以用numpy方法转换成对应的数据,例:

import tensorflow as tf
a = tf.constant(3,dtype=tf.int32,shape=(2,3))
print(a)
print(a.numpy())

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZ7gh0kK-1590935229168)(./img/2.png)]

tensor的数据类型有:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAFsmmfG-1590935229170)(./img/3.png)]

constant函数的value参数除了可以是数字外,还可以是numpy数组,例:

import numpy as np
b=np.array([1,2,3])
c=tf.constant(b)
print(c)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvgrnfl4-1590935229175)(./img/4.png)]

全0张量与全1张量的创建

使用tf.zerostf.ones函数进行创建。语法格式:

tf.zeros(shape,dtype = tf.float32)
tf.ones(shape,dtype = tf.float32)

例:

b = tf.zeros(2)
c = tf.ones([2, 3])
print("b=", b)
print("c=", c)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZV34YwX-1590935229178)(./img/7.png)]

如果要指定维度大于2的张量,可以将行列数写进数组,如c = tf.ones([2, 3])表明创建两行三列的全一张量。

创建元素值都相同的张量

tf.fill()函数用于创建值都相同的张量,语法格式为:

tf.fill(dims,value)

tf.fill()函数没有dtype参数,它根据传递进的参数自动判断数据类型的。dims用于指定形状,例:

d = tf.fill(dims=[2,3],value=9)
print("d=",d)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tphz9B6Y-1590935229180)(./img/8.png)]

创建随机数张量

正态分布

语法格式:

tf.random.normal(shape,mean,stddev,dtype)

mean意为均值,stddev为标准差,

例,创建2X2的正态分布随机数张量:

e = tf.random.normal([2, 2])
print("e=",e)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7bWzL4Iw-1590935229181)(./img/9.png)]

截断正态分布

语法格式:

tf.random.truncated_normal(shape, mean, stddev,)

返回值是一个截断的正态分布,截断的标准是2倍的标准差。

创建均匀分布张量

语法格式:

tf.random.uniform(shape, minval, maxval, dtype)

minval表示最小值,maxval表示最大值,前闭后开,不包括最大值。

例:

f = tf.random.uniform(shape=[2, 3], minval=0, maxval=10)
print("f=", f)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CnPPp3sB-1590935229182)(./img/10.png)]

随机打乱

tf.random.shuffle(x)函数意为随机打乱张量x的第一维,但其实它是可以打乱列表或者数组的,打乱后返回张量类型。

创建序列

tf.range()函数可以创建序列,用法与python中的range函数类似。语法格式:

tf.range(start, limit, delta=1, dtype)

startlimit分别表示起始数字与结束数字,前闭后开,delta表示步长。

改变张量数据类型

使用tf.cast可以改变张量的数据类型,语法格式为:

tf.cast(x,dtype)

例,将tf.int32改变成tf.float32类型

a = tf.constant(12,dtype=tf.int32,shape=(2,3))
tf.cast(a,dtype=tf.float32)
print(a)

tf.convert_to_tensor函数能将各种类型的Python对象转换为张量对象。它接受张量对象、数字数组、Python列表和Python标量。

a = [i for i in range(10)]
print("a_type=",type(a))
b = tf.convert_to_tensor(a)
print(b)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VGGjifrd-1590935229184)(./img/6.png)]

tensor对象的属性

可以直接输出张量的ndim(维度)、shapedtype属性,例:

a = tf.constant(value=2, shape=(2, 3), dtype=tf.float32)
print(a.ndim)
print(a.dtype)
print(a.shape)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSD11Inw-1590935229185)(./img/11.png)]

也可以使用tensorflowsizerankshape函数来得到张量的长度、维度、形状属性。

print(tf.size(a))
print(tf.shape(a))
print(tf.rank(a))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V8WYDLAK-1590935229188)(./img/12.png)]

最后

以上就是坚定蜻蜓为你收集整理的TensorFlow之张量创建张量的全部内容,希望文章能够帮你解决TensorFlow之张量创建张量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部