from tensorflow.python.framework import ops
ops.reset_default_graph()
#開始一個計算圖,通過使用tf.Session()的方式來獲得
sess=tf.Session()
#創建張量,TensorFlow當中內置了很多用來創建張量的不同方式
my_tensor=tf.zeros([1,20])
#通過在會話當中調用run函數估算我們的tensor
print(sess.run(my_tensor))
#創建變量
my_var=tf.Variable(tf.zeros([1,20]))
#注意,但是現在還不能直接使用sess.run()直接輸出計算的張量,因為TensorFlow通過計算圖進行操作,所以為了能夠估算一個變量的數值,我們必須要執行一個變量初始化的操作,
#接下來通過一個初始化操作,然后再執行tf.run()輸出
sess.run(my_var.initializer)
sess.run(my_var)
#接下來通過創建自定義形狀的變量變量
row_dim = 2
col_dim = 3
#聲明自定義形狀的變量
zeros_var = tf.Variable(tf.zeros([row_dim, col_dim]))
ones_var = tf.Variable(tf.ones([row_dim, col_dim]))
#接着通過調用initializer和run方法實現估算變量的數值
sess.run(zeros_var.initializer)
sess.run(ones_var.initializer)
print(sess.run(zeros_var))
print(sess.run(ones_var))
#基於其他的tensor的形狀創建
#如果創建的tensor的形狀依賴於其他的tensor的形狀,那么我們就可以使用TensorFlow內建的函數ones_like()或者zeros_like()來創建
zeros_similar=tf.Variable(tf.zeros_like(zeros_var))
ones_silimar=tf.Variable(tf.ones_like(ones_var))
sess.run(zeros_similar.initializer)
sess.run(ones_silimar.initializer)
print(sess.run(zeros_similar))
print(sess.run(ones_silimar))
#通過填充一個常量來創建張量
fill_var=tf.Variable(tf.fill([row_dim,col_dim],-1))
sess.run(fill_var.initializer)
print(sess.run(fill_var))
#我們還可以通過使用數組或者列表常量創建變量
#通過使用常量創建變量
const_var = tf.Variable(tf.constant([8, 6, 7, 5, 3, 0, 9]))
#也可以使用下面一種方式來進行變量的創建
const_fill_var = tf.Variable(tf.constant(-1, shape=[row_dim, col_dim]))
sess.run(const_var.initializer)
sess.run(const_fill_var.initializer)
print(sess.run(const_var))
print(sess.run(const_fill_var))
# 基於序列和范圍創建張量
# 在TensorFlow當中,我們也可以基於序列創建張量 TensorFlow當中的linspace和range和numpy類似於python和numpy當中的這個函數
# TensorFlow當中的 linspace
line_var = tf.Variable(tf.linspace(start=0.0,stop=1.0,num=3)) # 創建【0.0,0.5,1.0】包括最后一個值
# TensorFlow當中的范圍創建變量
sequence_var=tf.Variable(tf.range(start=6,limit=15,delta=3)) # 創建范圍函數[6,9,12]不包括最后一個值
sess.run(line_var.initializer)
sess.run(sequence_var.initializer)
print(sess.run(line_var))
print(sess.run(sequence_var))
# 使用隨機數在TensorFlow當中創建變量
rnorm_var = tf.random_normal([row_dim, col_dim], mean=0.0, stddev=1.0)
runif_var = tf.random_uniform([row_dim, col_dim], minval=0, maxval=4)
print(sess.run(rnorm_var))
print(sess.run(runif_var))
# 在TensorBoard當中可視化創建的變量
# 為了在TensorBoard當中可視化創建的變量,我們需要reset一下computational graph然后創建全局的初始化
# 重設計算圖
ops.reset_default_graph()
# 啟動一個會話
sess = tf.Session()
# 創建變量
my_var = tf.Variable(tf.zeros([1,20]))
# 向TensorBoard當中添加總結
merged = tf.summary.merge_all()
# initialize graph write
writer = tf.summary.FileWriter('/tmp/variable_logs', graph=sess.graph)
# 初始化操作
initialize_op = tf.global_variables_initializer()
# 執行初始化操作
sess.run(initialize_op)