1. 程式人生 > >TensorFlow小案例

TensorFlow小案例

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!={}")