TensorFlow小案例
阿新 • • 發佈:2018-12-11
TensorFlow案例一 使用已經介紹的相關TensorFlow相關知識點,實現一下三個功能(變數更新) 1.實現一個累加器,並且每一步均輸入累加器的結果值。 2.編寫一段程式碼,實現動態的更新新變數的維度數目 3.實現一個求階乘的程式碼。
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf ''' # # 需求一: # # 1.定義一個變數 x = tf.Variable(1,dtype=tf.int32,name='v_x') # # 2.變數的更新 assign_op = tf.assign(ref=x,value=x+1) # # 3.變數的初始化操作 x_init_op = tf.global_variables_initializer() # # 4.執行 # 執行assign_op = tf.global_variables_initializer() with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess: # # 變數的初始化 sess.run(x_init_op) # 模擬迭代更新累加器 for i in range(5): #執行更新操作 sess.run(assign_op) r_x = sess.run(x) print(r_x) # # 需求二 # # 1.定義一個不定形狀的變數 x = tf.Variable( initial_value=[],# 給定一個空值 dtype=tf.float32, trainable=False, validate_shape=False#設定為True,表示在變數更新的時候,進行shape檢查,預設為true ) # # 2.變數更改 concat = tf.concat([x,[0.0,0.0]],axis=0) assign_op = tf.assign(x,concat,validate_shape=False) # # 3.變數的初始化操作 x_init_op =tf.global_variables_initializer() # # 3.執行 with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess: #變數的初始化 sess.run(x_init_op) #模擬迭代更新累加器 for i in range(5): #執行更新操作 sess.run(assign_op) r_x = sess.run(x) print(r_x) ''' # 需求三 # 1.定義一個變數 sum = tf.Variable(1,dtype=tf.int32) # 2.第一定義一個佔位符 i = tf.placeholder(dtype=tf.int32) # 3.更新操作 tmp_sum = sum*i #temp_sum = tf.multiply(sum,i) assign_op = tf.assign(sum,tmp_sum) with tf.control_dependencies([assign_op]): #如果需要執行這個程式碼塊中的內容,必須先執行control_dependencies中給定的操作/tensor sum = tf.Print(sum,data=[sum,sum.read_value()],message='sum:') #4.變數初始化操作 x_init_op = tf.global_variables_initializer() #5.執行 with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess: # 變數初始化 sess.run(x_init_op) #模擬迭代更新操作 for j in range(1,6): #執行更新操作 sess.run(assign_op,feed_dict={i:j}) #通過control_dependencies可以指定以來關係,這樣的話,就不用管內部的更新操作了 r = sess.run(sum,feed_dict={i:j}) print("5!={}")