Preguntas frecuentes de Keras: preguntas frecuentes
- ¿Cómo citar a Keras?
- ¿Cómo ejecutar Keras en GPU?
- ¿Cómo ejecutar el modelo Keras en múltiples GPU?
- ¿Qué son "muestra", "lote", "época"?
- ¿Cómo guardar el modelo Keras?
- ¿Por qué el error del conjunto de entrenamiento es mucho mayor que el error del conjunto de prueba?
- ¿Cómo obtener la salida de la capa media?
- ¿Cómo usar Keras para procesar conjuntos de datos que exceden la memoria?
- ¿Cómo interrumpir el entrenamiento cuando el error del conjunto de validación ya no cae?
- ¿Cómo se calcula la partición del conjunto de verificación?
- ¿Se barajarán los datos durante el entrenamiento?
- ¿Cómo registrar el error y la precisión del conjunto de entrenamiento y el conjunto de validación después de cada época?
- ¿Cómo "congelar" la capa de red?
- ¿Cómo usar los RNN con estado?
- ¿Cómo eliminar una capa del modelo secuencial?
- ¿Cómo usar modelos pre-entrenados en Keras?
- ¿Cómo usar la entrada HDF5 en Keras?
- ¿Dónde se guarda el archivo de configuración de Keras?
- ¿Cómo obtener resultados reproducibles durante el desarrollo de Keras?
- ¿Cómo instalar HDF5 o h5py en Keras para guardar mi modelo?
¿Cómo citar a Keras?
Si Keras contribuye a su investigación, cítelo en su publicación. Los siguientes son ejemplos de referencias de entrada de BibTeX:
@misc{chollet2015keras,
title={Keras},
author={Chollet, Fran\c{c}ois and others},
year={2015},
publisher={GitHub},
howpublished={\url{https://github.com/keras-team/keras}},
}
¿Cómo ejecutar Keras en GPU?
Si está ejecutando con TensorFlow o CNTK backend, siempre que se detecte cualquier GPU disponible, el código se ejecutará automáticamente en la GPU.
Si está ejecutando con el backend Theano, puede usar uno de los siguientes métodos:
Método 1 : usa las banderas Theano.
THEANO_FLAGS=device=gpu,floatX=float32 python my_keras_script.py
"gpu" puede necesitar ser cambiado de acuerdo con el identificador de su dispositivo (por ejemplo, gpu0, gpu1, etc.).
Método 2 : Crear .theanorc
: tutorial guiado
Método 3 : configurar manualmente en el principio del código theano.config.device
, theano.config.floatX
:
import theano
theano.config.device = 'gpu'
theano.config.floatX = 'float32'
¿Cómo ejecutar el modelo Keras en múltiples GPU?
Recomendamos utilizar el backend TensorFlow para realizar esta tarea. Hay dos formas de ejecutar un solo modelo en varias GPU: datos paralelos y dispositivos paralelos .
En la mayoría de los casos, lo que más necesita es paralelismo de datos.
Paralelismo de datos
La paralelización de datos implica copiar el modelo de destino una vez en cada dispositivo y usar cada copia del modelo para procesar diferentes partes de los datos de entrada. Keras tiene una función de utilidad incorporada keras.utils.multi_gpu_model
que puede generar versiones paralelas de datos de cualquier modelo y lograr una aceleración cuasi lineal en hasta 8 GPU.
Para obtener más información, consulte la documentación de multi_gpu_model . Aquí hay un ejemplo rápido:
from keras.utils import multi_gpu_model
# 将 `model` 复制到 8 个 GPU 上。
# 假定你的机器有 8 个可用的 GPU。
parallel_model = multi_gpu_model(model, gpus=8)
parallel_model.compile(loss='categorical_crossentropy',
optimizer='rmsprop')
# 这个 `fit` 调用将分布在 8 个 GPU 上。
# 由于 batch size 为 256,每个 GPU 将处理 32 个样本。
parallel_model.fit(x, y, epochs=20, batch_size=256)
Dispositivo paralelo
El paralelismo del dispositivo incluye ejecutar diferentes partes del mismo modelo en diferentes dispositivos. Para un modelo con una arquitectura paralela, como un modelo con dos ramas, este enfoque es adecuado.
Este paralelismo se puede lograr mediante el uso de ámbitos del dispositivo TensorFlow. Aquí hay un ejemplo simple:
# 模型中共享的 LSTM 用于并行编码两个不同的序列
input_a = keras.Input(shape=(140, 256))
input_b = keras.Input(shape=(140, 256))
shared_lstm = keras.layers.LSTM(64)
# 在一个 GPU 上处理第一个序列
with tf.device_scope('/gpu:0'):
encoded_a = shared_lstm(tweet_a)
# 在另一个 GPU上 处理下一个序列
with tf.device_scope('/gpu:1'):
encoded_b = shared_lstm(tweet_b)
# 在 CPU 上连接结果
with tf.device_scope('/cpu:0'):
merged_vector = keras.layers.concatenate([encoded_a, encoded_b],
axis=-1)