title: How to use Keras with GPU?
body: <p>I've successfully installed TensorFlow with GPU. When I run the following script I get this result:</p>
  
  <pre><code>from tensorflow.python.client import device_lib
  print(device_lib.list_local_devices())
  </code></pre>
  
  <blockquote>
    <p>C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:140]<br>
    Your CPU supports instructions that this TensorFlow binary was not
    compiled to use: AVX2 2018-03-26<br>
    Found device 0 with properties: name: GeForce GTX 970 major: 5 minor:
    2 memoryClockRate(GHz): 1.253 pciBusID: 0000:01:00.0 totalMemory:
    4.00GiB freeMemory: 3.31GiB 2018-03-26 11:47:03.186046: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:1312]<br>
    Adding visible gpu devices: 0 2018-03-26 11:47:04.062049: I
    C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:993]<br>
    Creating TensorFlow device (/device:GPU:0 with 3043 MB memory) ->
    physical GPU (device: 0, name: GeForce GTX 970, pci bus id:
    0000:01:00.0, compute capability: 5.2) [name: "/device:CPU:0"
    device_type: "CPU" memory_limit: 268435456 locality { } incarnation:
    8082333747214375667 , name: "/device:GPU:0" device_type: "GPU"
    memory_limit: 3190865920 locality {   bus_id: 1 } incarnation:
    1190887510488091263 physical_device_desc: "device: 0, name: GeForce
    GTX 970, pci bus id: 0000:01:00.0, compute capability: 5.2" ]</p>
  </blockquote>
  
  <p>If I run a CNN in Keras, for example, will it automatically use the GPU? Or do I have to write some code to force Keras into using the GPU?</p>
  
  <p>For example, with the MNIST dataset, how would I use the GPU?</p>
  
  <pre><code>model = Sequential()
  model.add(Conv2D(32, kernel_size=(3, 3),
                   activation='relu',
                   input_shape=input_shape))
  model.add(Conv2D(64, (3, 3), activation='relu'))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Dropout(0.25))
  model.add(Flatten())
  model.add(Dense(128, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(num_classes, activation='softmax'))
  
  model.compile(loss=keras.losses.categorical_crossentropy,
                optimizer=keras.optimizers.Adadelta(),
                metrics=['accuracy'])
  
  model.fit(x_train, y_train,
            batch_size=batch_size,
            epochs=epochs,
            verbose=1,
            validation_data=(x_test, y_test))
  </code></pre>