嗨,我正在尝试针对我的问题微调vgg,但是当我尝试训练网络时,我得到了这个错误。
使用形状分配张量时出现 OOM[25088,4096]
网络有这样的结构:
我从这个站点获取这个tensorflow 预训练的 vgg 实现 代码。
我只添加这个程序来训练网络:
with tf.name_scope('joint_loss'):
joint_loss = ya_loss+yb_loss+yc_loss+yd_loss+ye_loss+yf_loss+yg_loss+yh_loss+yi_loss+yl_loss+ym_loss+yn_loss
# Loss with weight decay
l2_loss = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()])
self.joint_loss = joint_loss + self.weights_decay * l2_loss
self.optimizer = tf.train.AdamOptimizer(learning_rate=self.learning_rate).minimize(joint_loss)
我尝试将批量大小减少到 2 但不起作用我得到同样的错误。该错误是由于无法在内存中分配的大张量。如果我在没有最小化网络的情况下提供一个值,我只会在火车上得到这个错误。我怎样才能避免这个错误?如何节省显卡内存(Nvidia GeForce GTX 970)?
更新:如果我使用GradientDescentOptimizer训练过程开始,而不是如果我使用AdamOptimizer我得到内存错误,似乎 GradientDescentOptimizer 使用更少的内存。