tensorflow2.0基础(四)

#待优化张量 
#为了区分需要计算梯度信息的张量与不需要计算梯度信息的张量,tf.Variable #tf.Variable类型在普通的张量类型基础上添加name, trainable等属性 
#来支持计算图的构建, #name用于计算图中的变量,trainable表征当前张量书否需要被优化 
#trainable = False 来设置张量不需要优化 
#通过普通张量创建Varible 
import tensorflow as tf 
a = tf.constant([-1, 0, 1, 2]) 
aa = tf.Variable(a) 
aa.name, aa.trainable 
('Variable:0', True)
#直接创建 
import tensorflow as tf 
a = tf.Variable([[1,2],[3,4]]) 
print(a) 
print(a.trainable) 
#待优化张量可视为普通张量的特殊类型,普通张量其实也可以通过 
#GradientTape.watch()方法临时加入跟踪梯度信息的列表,从而支持自动求导功能
<tf.Variable 'Variable:0' shape=(2, 2) dtype=int32, numpy=
array([[1, 2],
       [3, 4]])>
True
#从数组,列表对象创建张量 
import tensorflow as tf 
a = tf.convert_to_tensor([1,2.]) 
b = tf.zeros([2,2]) 
c = tf.ones([2,2]) 
print(a) 
print(b) 
print(c) 
d = tf.zeros_like(b) 
#创建相似的张量 
e = tf.ones_like(c) 
print(d) 
print(e) 
tf.Tensor([1. 2.], shape=(2,), dtype=float32)
tf.Tensor(
[[0. 0.]
 [0. 0.]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[1. 1.]
 [1. 1.]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[0. 0.]
 [0. 0.]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[1. 1.]
 [1. 1.]], shape=(2, 2), dtype=float32)
#创建自定义数值张量 
#通过tf.fill(shape, value) 可以创建全为自定义数值value的张量 
import tensorflow as tf 
b = tf.fill([],-1) 
c = tf.fill([2],-1) 
print(b) 
print(c) 
tf.Tensor(-1, shape=(), dtype=int32)
tf.Tensor([-1 -1], shape=(2,), dtype=int32)
#创建已知分布的张量 
#在卷积神经网络中,卷积张量W初始化为正太分布有利于网络的训练 
#在对抗生成网络中,隐藏变量z一般采样自均匀分布 
#tf.random.normal(shape, mean = 0.0, stddev = 1.0)可以创建形状为shape, 
#均值为mean,标准差为stddev的正太分布N(mean,stddev*stddev) 
import tensorflow as tf 
a = tf.random.normal([2,2]) 
b = tf.random.normal([2,2], mean = 1, stddev = 2) 
print(a) 
print(b) 
tf.Tensor(
[[-0.8371254   0.66118824]
 [-0.45992622  0.25380087]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[ 0.09488702  0.56210035]
 [ 2.963553   -1.3841612 ]], shape=(2, 2), dtype=float32)
#tf.random.uniform(shape, minval = 0, maxval= None, dtype = tf.float32) 
#可以创建采样自[minval,maxval]区间的均匀分布的张量 
import tensorflow as tf 
a = tf.random.uniform([2,2]) 
b = tf.random.uniform([2,2],maxval = 10) 
c = tf.random.uniform([2,2],maxval = 10, dtype = tf.int32) 
print(a) 
print(b) 
print(c) 
tf.Tensor(
[[0.9433018  0.31601858]
 [0.5897428  0.22913992]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[7.9288673 8.824562 ]
 [4.123081  1.0100675]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[5 0]
 [3 9]], shape=(2, 2), dtype=int32)
#创建序列 
#在循环计算或者对张量进行索引时,经常需要创建一段连续的整型序列 
#可以通过tf.range(start, limit, delta = 1)其中[start, limit),步长为delta的序列 
import tensorflow as tf 
a = tf.range(10, delta = 2) 
print(a) 
tf.Tensor([0 2 4 6 8], shape=(5,), dtype=int32)
发布了11 篇原创文章 · 获赞 1 · 访问量 188

猜你喜欢

转载自blog.csdn.net/q5c521/article/details/105366813