TensorBoard具有在会话时间绘制张量直方图的功能.我想要一个训练期间梯度的直方图.
tf.gradients(yvars,xvars)
返回一个渐变列表.
但是,tf.histogram_summary('name',Tensor)
只接受Tensors,而不是Tensors列表.
目前,我做了一个解决方案.我将所有Tensors展平为一个列向量并将它们连接起来:
for l in xrange(listlength):
col_vec = tf.reshape(grads[l],[-1,1])
g = tf.concat(0,[g,col_vec])
grad_hist = tf.histogram_summary("name", g)
绘制渐变直方图的更好方法是什么?
这似乎很常见,所以我希望TensorFlow能有一个专门的功能.
我正在实施一项交替培训计划.该图包含两个培训操作.培训应该在这些之间交替进行.
以下是一个小例子.但它似乎在每一步都更新了两个操作系统.我怎样才能明确地在这些之间交替?
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
# Import data
mnist = input_data.read_data_sets('/tmp/tensorflow/mnist/input_data', one_hot=True)
# Create the model
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]), name='weights')
b = tf.Variable(tf.zeros([10]), name='biases')
y = tf.matmul(x, W) + b
# Define loss and optimizer
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
global_step = tf.Variable(0, trainable=False)
tvars1 = [b]
train_step1 = tf.train.GradientDescentOptimizer(0.5).apply_gradients(zip(tf.gradients(cross_entropy, tvars1), tvars1), global_step)
tvars2 = [W]
train_step2 = tf.train.GradientDescentOptimizer(0.5).apply_gradients(zip(tf.gradients(cross_entropy, …
Run Code Online (Sandbox Code Playgroud) python machine-learning gradient-descent autodiff tensorflow
是否也存在分解为高斯混合的性质?如果有的话,有证据吗?
gaussian decomposition wavelet neural-network continuous-fourier
今天我在Tensorflow中为我的LSTM添加学习率衰减.
我改变
train_op = tf.train.RMSPropOptimizer(lr_rate).minimize(loss)
Run Code Online (Sandbox Code Playgroud)
至
lr = tf.Variable(0.0,trainable=False)
Run Code Online (Sandbox Code Playgroud)
并运行每一个火车步骤
sess.run(tf.assign(lr, lr_rate*0.9**epoch))
Run Code Online (Sandbox Code Playgroud)
但是,这种变化会将执行时间从大约7分钟增加到大约20分钟.
我的问题是:为什么这种改变会增加执行时间?
一个明显的解决方法是每1000次迭代只进行一次分配.但是,我想了解这背后的原因.