Der Tensor, den Sie verwenden, ist groß, aber nicht so groß für eine 8GB GPU. 144 * 144 * 144 * 128
ist ~ 380 Millionen, also sogar mit 32-Bit-Elemente benötigt 1,5GiB. Ich habe eine GeForce GTX 1070 mit 8 GB (gleiche Größe wie Sie) und hier ist mein Tensorflow Experiment:
import numpy as np
import tensorflow as tf
X = tf.placeholder(dtype=tf.int32, shape=(1, 144, 144, 144, 128))
init = tf.global_variables_initializer()
with tf.Session() as session:
session.run(init)
value = session.run([X], feed_dict={X: np.zeros(shape=(1, 144, 144, 144, 128))})
print np.array(value).shape
Der Ausgang:
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.7465
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 4.14GiB
2017-08-17 20:05:54.312424: I tensorflow/core/common_runtime/gpu/gpu_device.cc:908] DMA: 0
2017-08-17 20:05:54.312430: I tensorflow/core/common_runtime/gpu/gpu_device.cc:918] 0: Y
2017-08-17 20:05:54.312444: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
(1, 1, 144, 144, 144, 128)
Hinweis, dass der freie Speicher ist viel niedriger als 8Gb, weil ich 2 UHD-Monitore. Dies könnte die erste Ursache in Ihrem Fall sein: Andere Prozesse können viele GPU-Ressourcen verbrauchen.
Als nächstes haben Sie Ihre neuronale Netzwerkarchitektur nicht bereitgestellt, aber wenn Sie zum Beispiel Deep Convolutional Neural Networks verwenden, beachten Sie, dass die ersten Schichten viel Speicher für Parameter und Gradienten verbrauchen. Vielleicht möchten Sie this helpful page for details lesen. Wenn dies der Fall ist, müssen Sie möglicherweise eine andere GPU anschließen und das Diagramm auf alle verfügbaren Grafikprozessoren aufteilen (here's how you can do it). Es gibt 12-GB-Speicher-GPUs von NVidia.
Schließlich können Sie immer in Betracht ziehen, die Gleitkommazahl tf.float64 -> tf.float32 -> tf.float16
für alle Ihre Variablen zu reduzieren. Dies kann 8x Speicher sparen, was manchmal gerade ausreicht, um auf einer GPU zu laufen.
danke für die Antwort, ich habe dieses Problem gelöst, indem ich meinen Chef eine bessere Maschine kaufen lassen. und das Problem kann gemildert werden, indem ein spezielleres seichteres Netz verwendet wird und int32 oder int16 verwendet wird – user158615