2017-08-25 103 views
1

我想在激活函数内产生随机数,这样每次激活函数被调用时都会产生一个随机数。我尝试使用random.uniform和tf.random_uniform,但它只在编译时生成一个随机值,并且不会再发生变化。我怎样才能让它每次更新?张量流中的随机值

滑稽的事实: 当我创建使用tf.Variable(random.uniform(1,2))每次它就是所谓的价值函数稍大时间的变量,例如:

1.22069513798 
1.22072458267 
1.22075247765 
1.22077202797 

编辑: 的功能很简单 功能:

def activation(tensor): 
    alpha = tf.Variable(random.uniform(1,2)) 
    return alpha*tensor,alpha 

我会省略了神经网络中的所有行,但我只是把它作为:

act,alpha = activation(dense_layer+bias) 

后来我通过简单地获得的价值:

[ts,c,alph]=sess.run([train_step,cost,alpha], feed_dict={xi: x_raw, yi: y_raw}) 

感谢

回答

0

很难说没有源代码,但也许您正在使用随机值初始化你的变量和重复使用相同的值?

另一种可能性:

enter image description here

+0

我说我的最后一次尝试的代码。我不认为你发布它发生了什么,因为我打印了数千次迭代,给了我相同的随机值:) – kuonb

+1

是的,你在初始化期间将你的随机变量保存到变量alpha中。如果你想用新的随机值重新初始化,你可以做'sess.run(alpha.initializer)' –

+0

它完美的工作!谢谢 : ) – kuonb