Le tenseur que vous utilisez est grand, mais pas très gros pour un GPU 8Gb. 144 * 144 * 144 * 128
est ~ 380 millions, donc même avec les éléments 32 bits, il nécessite 1.5GiB. J'ai une GeForce GTX 1070 avec 8Gb (même taille que vous) et voici mon expérience tensorflow:
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
La sortie:
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)
Notez que la mémoire libre est beaucoup plus faible que 8Gb, parce que je l'utilise 2 moniteurs UHD. Cela peut donc être la première cause dans votre cas: d'autres processus peuvent consommer beaucoup de ressources GPU. Ensuite, vous n'avez pas fourni votre architecture Neural Network, mais si vous utilisez, par exemple, Deep Convolutional Neural Networks, notez que les premières couches consomment beaucoup de mémoire pour les paramètres et les dégradés. Vous voudrez peut-être lire this helpful page for details. Si tel est le cas, vous devrez peut-être brancher un autre GPU et diviser le graphique sur tous les GPU disponibles (here's how you can do it). Il y a des GPU de mémoire 12Gb disponibles chez NVidia. Enfin, vous pouvez toujours envisager de réduire la précision flottante tf.float64 -> tf.float32 -> tf.float16
pour toutes vos variables. Cela peut économiser 8 fois la mémoire, ce qui est parfois juste suffisant pour fonctionner sur un GPU.
merci pour la réponse, j'ai résolu ce problème en laissant mon patron acheter une meilleure machine. et le problème peut être atténué en utilisant spécial net peu profond et en utilisant int32 ou int16 – user158615