keras Tensorflow 2.0 fit()无法识别batch_size

y53ybaqx  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(191)

所以我初始化一个模型为:
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个样本。我不知道为什么要整组而不是整批。

ykejflvf

ykejflvf1#

model.compile()只为训练配置模型,它没有任何内存分配。
你的bug是自我解释的,你直接将一个大的numpy数组输入模型。我建议编写一个新的数据生成器或keras.utils.Sequence来输入数据。如果是这样,您不需要在fit方法中再次指定batch_size,因为您自己的生成器或Sequence将生成批处理。

相关问题