Tensorflow自定义损失的情况下初始化部分变量方式

  

一般情况下,tensorflow里面变量初始化过程为:

        #变量...........   # .....................   init=tf.initialize_all_variables ()   sess.run (init)      

这里tf.initialize_all_variables()会初始化所有的变量。

  

实际过程中,假设有a, b, c三个变量,其中一个已经被初始化了,只想单独初始化b, c,那么:

        #变量……   …   init=tf.variables_initializer ([b, c])   sess.run (init)      

此外,如果自行修改了优化器,如下代码就会报错:

        #定义变量a, b, c…   ....   my_optimizer=tf.train。RMSProp (learning_rate=0.1) .minimize (my_cost)   init=tf.variables_initializer ([b, c])   sess.run (init)      

这是因为自己定义的优化器会生成新的变量,但是在init里面并没有初始化,所以无法访问,会报错。解决方法如下:

        a=tf.Variables(…) #线N   temp=集(tf.all_variables ())   b=tf.Variables (…)   c=tf.Variables (…)   #我的优化器的定义   优化器=tf.train .......   init=tf.variables_initializer(集(tf.all_varialbles())临时)#直线M   sess.run (init)      

首先,temp=集(tf.all_variables())将该行(N)行代码之前的所有变量保存在临时表中,接下来定义变量b, c,以及自定义的优化器,然后设置(tf.all_varialbles()存储了改行(M)行之前的所有变量(包括优化器生成的变量以及临时中所含的变量),设置(tf.all_varialbles())临时相减得到N ~ M行这几行定义的变量。

  

以上这篇Tensorflow自定义损失的情况下初始化部分变量方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Tensorflow自定义损失的情况下初始化部分变量方式