我遇到了一个问题,我的Tensorflow执行在compute_gradients
上卡住了。我正在初始化我的模型,然后像这样设置损失函数。请注意,目前我还没有开始培训,所以问题不是我的数据
# The model for training
given_model = GivenModel(images_input=images_t)
print("Done setting up the model")
with tf.device('/gpu:0'):
with tf.variable_scope('prediction_loss'):
logits = given_model.prediction
softmax_loss_per_sample = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels))
total_training_loss = softmax_loss_per_sample
optimizer = tf.train.AdamOptimizer()
gradients, variables = zip(*optimizer.compute_gradients(total_training_loss))
gradients, _ = tf.clip_by_global_norm(gradients, gradient_clip_threshold)
optimize = optimizer.apply_gradients(zip(gradients, variables))
with tf.control_dependencies([optimize]):
train_op = tf.constant(0)
这个代码只是挂起,什么也不做。当我用ctrl+c退出时(不管运行多长时间),它总是停留在compute_gradients
。在
有人知道为什么会这样吗?我不是在一个循环内做这个,我的模型不是那么大。它似乎也在使用CPU来完成这项工作(GPU上还没有分配内存),尽管有with tf.device('/gpu:0'):
选项,但我不能强制它使用GPU。在
谢谢
以下是我按ctrl+c组合键时打印的内容:
^{pr2}$
我的问题是模型太大了。把它变小就解决了这个问题。在
如果此时你还没有开始训练,也许这与图的构造有关。您确定GivenModel是正确的吗? 因为我将此自动编码器example与您对优化器的定义如下所示,因此在执行此代码时未发现任何问题:
所以,我认为问题可能出在模型的其他部分,但是为了确定我们需要模型的进一步细节。在
现在,关于模型的位置是在cpu还是在gpu。如果您没有定义任何在cpu上,gpu设备将自动为您选择。因此,理论上模型将自动分配到gpu上。但是,同样,可能图的构造有问题,它没有达到模型实际分配到gpu内存的程度。在
我遇到这个问题有三个原因:
型号太大,所以减少批量大小
存在无梯度的var:
它打印:
在信息:tensorflow:克隆渐变后((,),) 信息:tensorflow:克隆梯度后((None,),)
相关问题 更多 >
编程相关推荐