天天看點

2.2tensorflow2.3常量定義、類型、使用執行個體、運算

自己開發了一個股票智能分析軟體,功能很強大,需要的點選下面的連結擷取:

https://www.cnblogs.com/bclshuai/p/11380657.html

1.1  常量constant

1.1.1         常量的聲明

值不能改變的張量。建立通過constant來實作, constant()是一個函數,提供在tensorflow中定義常量(不可更改的張量)的方法。

tf.constant(

    value,//值清單,多個值用[]包括,逗号分開,按照shape指定的形狀去生成,清單中的值數量等于shape(例如2*3)定義的大小,否則tensorflow2.3會報錯。

    dtype=None,.//定義常量的資料類型

    shape=None,//如果要設定行列,可以用[2,3]設定,表示2行3列

    name='Const',//定義變量的名字

    verify_shape=False// verify_shape預設為False,如果修改為True的話表示檢查value的形狀與shape是否相符,如果不符會報錯。

)

1.1.2         常量的類型

(1)标量常量

t_1 = tf.constant(4)

(2)向量常量1行3列

t_2 = tf.constant([4,3,2])

(3)[M,N] 的零元素矩陣

M行N列的零元素矩陣,資料類型(dtype)可以是 int32、float32 等:

tf.zeros([M,N],tf.dtype);

zero_t = tf.zeros([2,3],tf.int32) # Results in an 2x3 array of zeros:[[0 0 0],[0 0 0]]

(4)[M,N]元素均為 1 的矩陣

ones_t = tf.ones([2,3],tf.int32) # Results in an 2x3 array of ones:[[1 1 1],[1 1 1]]

(5)等差排布的序列

tf.linspace(start,stop,num)#起始值和總的數量

相應的值為 (stop-start)/(num-1)。例如:

range_t = tf.linspace(2.0,5.0,5)

#We get:[2. 2.75 3.5 4.25 5.]

從開始(預設值=0)生成一個數字序列,增量為 delta(預設值=1),直到終值(但不包括終值):

tf.range(start,limit,delta)//起始值和增量

下面給出執行個體:

range_t = tf.range(10)

#Result:[0 1 2 3 4 5 6 7 8 9]

(6)形狀為 [M,N] 的正态分布随機數組

t_random=tf.random_normal([M,N],mean=2.0,stdev=4,seed=12)

其中random_normal是随機數的類型,還有另外兩種:截尾正太分布随機數組truncated_normal, M和N表示M行N列,mean表示随機數組中值的平均值,stddev表示随機值的标準差,seed表示随機種子。

(7)限定範圍的随機正太分布數組

[minval(default=0),maxval] 範圍内建立形狀為 [M,N] 的給定伽馬分布随機數組

t_random=tf.random_uniform([2,3],minval=1,maxval=4,seed=12)。

(8)從随機數組中裁剪出指定大小的數組,行列都要小于等于原矩陣

tf.random_crop(t_random,[2,2],seed=12)

1.1.3         常量的使用執行個體

import tensorflow as tf
# int型
a = tf.constant(1)
print(a)
# float型
b = tf.constant(1.)
print(b)
# double型
c = tf.constant(2.,dtype=tf.float64)
print(c)
# bool型
d = tf.constant([True,False])
print(d)
# string型
e = tf.constant('hello world')
print(e)
#向量
f=tf.constant([1,2,3])
print(f)
#矩陣
g=tf.constant([1,2,3,4,5,6],shape=[2,3])
print(g)
h=tf.constant(1,shape=[3,2])
print(h)
i=tf.compat.v1.constant([[1,2],[4,5]],shape=[2,2],verify_shape=False)
print(i)
#元素值都為0的矩陣zeros([M,N],tf.dtype)
zero_t = tf.zeros([2,3],tf.int32)
print(zero_t)
"""輸出
tf.Tensor(
[[0 0 0]
 [0 0 0]], shape=(2, 3), dtype=int32)
 """
#元素都為1的矩陣
one_t=tf.ones([3,2],tf.int32)
print(one_t)
"""輸出
tf.Tensor(
[[1 1]
 [1 1]
 [1 1]], shape=(3, 2), dtype=int32)
 """
#等差分布的向量
range_t =tf.linspace(2.0, 5.0, 5)
print(range_t)#輸出tf.Tensor([2.   2.75 3.5  4.25 5.  ], shape=(5,), dtype=float32)
#形狀為 [M,N] 的正态分布随機數組
t_randomnormal=tf.compat.v1.random_normal([4,4],mean=2.0,stddev=4,seed=12)
print(t_randomnormal)
"""輸出
[[ 0.25347447  5.37991     1.9527606  -1.5376031 ]
 [ 1.2588985   2.8478067  11.545206   -1.0216885 ]
 [ 3.6549058   6.6507907   4.42358     1.4614596 ]
 [ 1.4433938   1.7380679  -1.6191797   2.0041263 ]], shape=(4, 4), dtype=float32)
 """
#限定範圍的随機正太分布數組
t_randomuniform=tf.compat.v1.random_uniform([2,2],minval=1,maxval=4,seed=12)
print(t_randomuniform)
"""輸出
tf.Tensor(
[[2.9084575 3.7722745]
 [3.028832  2.5063753]], shape=(2, 2), dtype=float32)
 """
#從大的數組中裁剪出出小的矩陣,行列都要小于等于大的矩陣
t_randomcrop=tf.compat.v1.random_crop(t_randomnormal,[2,3],seed=12)
print(t_randomcrop)
"""輸出
tf.Tensor(
[[ 2.8478067 11.545206  -1.0216885]
 [ 6.6507907  4.42358    1.4614596]], shape=(2, 3), dtype=float32)
"""      

1.1.4         算術運算符運算

對于除法多說兩句,Tensor有兩種除法,一種是”/”,另一種是”//”。”/”是浮點除法,對應的是tf.truediv,而”//”是計算整除,對應tf.floordiv。

d01 = tf.constant(1)

d02 = tf.constant(2)

d_add = d01 + d02

print(d_add)#Tensor("add:0", shape=(), dtype=int32)



d_sub = d01 - d02

print(d_sub)#Tensor("sub:0", shape=(), dtype=int32)



d_mul = d01 * d02

print(d_mul)#Tensor("mul:0", shape=(), dtype=int32)

d_fdiv = d01 / d02#浮點數運算

print(d_fdiv)#Tensor("truediv:0", shape=(), dtype=float64)

d_idiv=d01//d02#整型運算

print(d_idiv)#Tensor("floordiv:0", shape=(), dtype=int32)

d_mod = d01 % d02

print(d_mod)#Tensor("mod:0", shape=(), dtype=int32)



d_minus = -d01

print(d_minus)#Tensor("Neg:0", shape=(), dtype=int32)      

1.1.5         比較運算符運算

對于>, <, >=, <=等關系,都會生成一個需要Session來運算的Tensor對象。隻有==是例外,它會立即傳回這兩個Tensor是否是同一對象的結果

d11 = d01 > d02

d12 = d01 < d02

d13 = d01 == d02

d14 = d01 >= d02

d15 = d01 <= d02



print(d11)#Tensor("Greater:0", shape=(), dtype=bool)

print(d12)#Tensor("Less:0", shape=(), dtype=bool)

print(d13)#False

print(d14)#Tensor("GreaterEqual:0", shape=(), dtype=bool)

print(d15)#Tensor("LessEqual:0", shape=(), dtype=bool)      

1.1.6         數學運算

整形,一定要先轉換成浮點型才能進行sqrt,sin等數學函數計算。

d31 = tf.constant(100, dtype=tf.float64)

d32 = tf.sqrt(d31)

print(ss.run(d32))#10.0