1、变量,是指给定一个初始值,后期可以重新赋值的一个数;
2、在tensorflow中的函数是tf.Variable,有11个参数,分别如下所示:
initial_value=None, 初始值,默认为空
trainable=True, 如果`True`,则默认值也将变量添加到图形中集合中
collections=None,图集合
validate_shape=True,是否允许变量shape发生变化
caching_device=None,指定缓存驱动
name=None,变量名称
variable_def=None,协议缓冲区。如果不是“无”,则重新创建变量对象及其内容,引用变量的节点在图中,必须已经存在。图形没有改变。`variable_def`和其他参数是互斥的。
dtype=None,变量数据类型
expected_shape=None,张量的shape,如果设置需要使得初始值符合该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、常规用法
如下示例,可以只传入一个initial_value及一个名称“W”,至于initial_value的大小可以根据自己的算法进行调整,其他参数默认,则保存一个变量;
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))
结果如下所示:
1.0
5、重新赋值
变量可以被重新赋值,使用关键字assign,计数器示例如下所示
import tensorflow as tf
# 定义计数器
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))
结果如下所示:
打印1到10
6、优点及联合用法
1、在机器学习算法中的W和b如果使用Tensorflow定义算法,建议所有的参数变量使用Variable形式,不要使用常数形式,据经验表明,使用常量会使得程序效率变低;
2、常和以下兄弟函数联合使用
random_normal: 正太分布随机数,均值mean,标准差stddev
truncated_normal:截断正态分布随机数,均值mean,标准差stddev,保留[mean-2*stddev,mean+2*stddev]范围内的随机数
random_uniform:均匀分布随机数,范围为[minval,maxval]
三个资料Q群下载不了也转发不了,先放这里Fine_tuning.zipLangChain.zipdata_clear.rar