1、變量,是指給定一個(gè)初始值,后期可以重新賦值的一個(gè)數(shù);
2、在tensorflow中的函數(shù)是tf.Variable,有11個(gè)參數(shù),分別如下所示:
initial_value=None, 初始值,默認(rèn)為空
trainable=True, 如果`True`,則默認(rèn)值也將變量添加到圖形中集合中
collections=None,圖集合
validate_shape=True,是否允許變量shape發(fā)生變化
caching_device=None,指定緩存驅(qū)動(dòng)
name=None,變量名稱
variable_def=None,協(xié)議緩沖區(qū)。如果不是“無”,則重新創(chuàng)建變量對(duì)象及其內(nèi)容,引用變量的節(jié)點(diǎn)在圖中,必須已經(jīng)存在。圖形沒有改變。`variable_def`和其他參數(shù)是互斥的。
dtype=None,變量數(shù)據(jù)類型
expected_shape=None,張量的shape,如果設(shè)置需要使得初始值符合該shape
import_scope=None,可選的字符串
constraint=None 約束條件
3、使用特征
變量必須初始化,初始化示例如下所示:
import tensorflow as tf
init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init)
sess.close()
4、常規(guī)用法
如下示例,可以只傳入一個(gè)initial_value及一個(gè)名稱“W”,至于initial_value的大小可以根據(jù)自己的算法進(jìn)行調(diào)整,其他參數(shù)默認(rèn),則保存一個(gè)變量;
import tensorflow as tf
const=tf.Variable(1.0,name="W")
init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init)
print(sess.run(const))
結(jié)果如下所示:
1.0
5、重新賦值
變量可以被重新賦值,使用關(guān)鍵字assign,計(jì)數(shù)器示例如下所示
import tensorflow as tf
# 定義計(jì)數(shù)器
count=tf.Variable(0,name="counter")
counter=tf.add(count,tf.constant(1))
#重新賦值
updatecount=tf.assign(count,counter)
#變量初始化
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(10):
sess.run(updatecount)
print(sess.run(count))
結(jié)果如下所示:
打印1到10
6、優(yōu)點(diǎn)及聯(lián)合用法
1、在機(jī)器學(xué)習(xí)算法中的W和b如果使用Tensorflow定義算法,建議所有的參數(shù)變量使用Variable形式,不要使用常數(shù)形式,據(jù)經(jīng)驗(yàn)表明,使用常量會(huì)使得程序效率變低;
2、常和以下兄弟函數(shù)聯(lián)合使用
random_normal: 正太分布隨機(jī)數(shù),均值mean,標(biāo)準(zhǔn)差stddev
truncated_normal:截?cái)嗾龖B(tài)分布隨機(jī)數(shù),均值mean,標(biāo)準(zhǔn)差stddev,保留[mean-2*stddev,mean+2*stddev]范圍內(nèi)的隨機(jī)數(shù)
random_uniform:均勻分布隨機(jī)數(shù),范圍為[minval,maxval]








暫無數(shù)據(jù)