我正在使用TensorFlow在NVIDIA GEFORCE GTX 1080 Ti上训练神经网络。我的CPU有32 GB RAM。 该网络只有1个隐藏层,其权重分别为[16788,10000]和[10000,1478]。最小批量= 256。
a.b.c.d
成功完成3个时期后,会弹出以下错误消息:
for epo in range(self.epochs):
loss_sum = 0
for mini_count in (range(len(mini_batches_x1_train))):
batch_x1 = tf.one_hot(mini_batches_x1_train[mini_count], self.voc_size).eval()
batch_x2 = mini_batches_x2_train[mini_count][0].toarray()
batch_x = np.concatenate((batch_x1, batch_x2), axis = 1)
batch_y = mini_batches_y_train[mini_count]
batch_y = np.array(batch_y).reshape(len(batch_y),1) #for tf.nce_loss()
_, mini_loss = sess.run([optimizer,loss], feed_dict={X: batch_x, Y: batch_y})
loss_sum += mini_loss
avg_loss = loss_sum/len(mini_batches_x1_train)
print("\nEpoch", epo+1, " completed at ",time.ctime(time.time()), " | Epoch Loss = ", avg_loss)
更多的纪元需要更多的内存吗?我在哪里可能错了?请提出解决此问题的可能解决方案。
答案 0 :(得分:0)
在GPU上进行训练时,Tensorflow会尝试尽可能多地将其加载到GPU VRAM中,以使其速度更快且不会因频繁访问GPU中的RAM数据而成为瓶颈。 因此,如果网络不适合VRAM,则基本上有多种选择。