【发布时间】:2017-04-16 13:31:51
【问题描述】:
您好,我正在尝试对 vgg 进行微调以解决我的问题,但是当我尝试训练网络时出现此错误。
用形状分配张量时的OOM[25088,4096]
网络有这样的结构:
我从这个 site 中获取这个 tensorflow 预训练 vgg 实现 code。
我只添加这个程序来训练网络:
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)
我尝试将 batch size 减少到 2 但不起作用我得到同样的错误。该错误是由于无法在内存中分配的大张量。如果我在没有最小化网络的情况下提供一个值,我只会在火车上得到这个错误。我怎样才能避免这个错误?如何节省显卡内存(Nvidia GeForce GTX 970)?
更新: 如果我使用 GradientDescentOptimizer 训练过程开始,而不是如果我使用 AdamOptimizer 我得到内存错误,似乎GradientDescentOptimizer 使用更少的内存。
【问题讨论】:
标签: python-2.7 tensorflow conv-neural-network vgg-net