Solución:
Estás usando la versión de GPU. Puede enumerar los dispositivos de tensorflow disponibles con (también verifique esta pregunta):
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices()) # list of DeviceAttributes
EDITAR:
Con tensorflow> = 1.4 puede ejecutar la siguiente función:
import tensorflow as tf
tf.test.is_gpu_available() # True/False
# Or only check for gpu's with cuda support
tf.test.is_gpu_available(cuda_only=True)
EDITAR 2:
La función anterior está obsoleta en tensorflow > 2.1
. En su lugar, debería utilizar la siguiente función:
import tensorflow as tf
tf.config.list_physical_devices('GPU')
NOTA:
En su caso, tanto la cpu como la gpu están disponibles, si usa la versión de cpu de tensorflow, la gpu no aparecerá en la lista. En su caso, sin configurar su dispositivo tensorflow (with tf.device("..")
), ¡tensorflow seleccionará automáticamente tu gpu!
Además, tu sudo pip3 list
muestra claramente que está utilizando tensorflow-gpu. Si tuviera la versión de CPU de tensoflow, el nombre sería algo como tensorflow(1.1.0)
.
Consulte este problema para obtener información sobre las advertencias.
Muchas cosas tienen que salir bien para que Keras use la GPU. Pon esto cerca de la parte superior de tu cuaderno jupyter:
# confirm TensorFlow sees the GPU
from tensorflow.python.client import device_lib
assert 'GPU' in str(device_lib.list_local_devices())
# confirm Keras sees the GPU (for TensorFlow 1.X + Keras)
from keras import backend
assert len(backend.tensorflow_backend._get_available_gpus()) > 0
# confirm PyTorch sees the GPU
from torch import cuda
assert cuda.is_available()
assert cuda.device_count() > 0
print(cuda.get_device_name(cuda.current_device()))
NOTA: Con el lanzamiento de TensorFlow 2.0, Keras ahora se incluye como parte de la API de TF.
Para saber a qué dispositivos están asignados sus operaciones y tensores, cree la sesión con la opción de configuración log_device_placement establecida en True.
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name="a")
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name="b")
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))
Debería ver el siguiente resultado:
Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla K40c, pci bus
id: 0000:05:00.0
b: /job:localhost/replica:0/task:0/device:GPU:0
a: /job:localhost/replica:0/task:0/device:GPU:0
MatMul: /job:localhost/replica:0/task:0/device:GPU:0
[[ 22. 28.]
[ 49. 64.]]
Para obtener más detalles, consulte el enlace Uso de GPU con tensorflow