所以我初始化一个模型为:model = tf.keras.utils.multi_gpu_model(model, gpus=NUM_GPUS)
,当我执行model.compile()
时,它运行得非常好。
但是当我执行history = model.fit(tf.cast(X_train, tf.float32), tf.cast(Y_train, tf.float32), validation_split=0.25, batch_size = 16, verbose=1, epochs=100)
时,它给了我错误:
当分配形状为[4760,256,256,3]的Tensor并通过分配器GPU_0_bfc [Op:Cast] name在/job:localhost/replica:0/task:0/device:GPU:0上键入float时,会出现OOM:演员/
这段代码以前运行得很好,但在Tensorflow 2.0中就不行了。我的训练集中有4760个样本。我不知道为什么要整组而不是整批。
1条答案
按热度按时间ykejflvf1#
model.compile()
只为训练配置模型,它没有任何内存分配。你的bug是自我解释的,你直接将一个大的numpy数组输入模型。我建议编写一个新的数据生成器或
keras.utils.Sequence
来输入数据。如果是这样,您不需要在fit
方法中再次指定batch_size
,因为您自己的生成器或Sequence
将生成批处理。