【发布时间】:2019-07-23 12:37:11
【问题描述】:
在 Nvidia RTX2080Ti(11Gb 内存!)上使用 tf.keras.applications.ResNet50 实现时遇到内存不足错误,我感到很惊讶。
问题:
我使用的工作流程有问题吗?
注意事项:
- 我正在使用
tensorflow-gpu==2.0.0b1和CUDA v10.1 - 我从事分割任务,因此大
output_shape - 我自己构建批次,因此使用
train_on_batch() - 即使将
memory_growth设置为True,内存也会在几分之一秒内从 700Mb 填满到 10850Mb。
代码:
import tensorflow as tf
import tensorflow.keras as ke
import numpy as np
ke.backend.clear_session()
inputs = ke.layers.Input(shape=(512,1024,3), dtype="float32")
outputs = ke.applications.ResNet50(include_top=False, weights="imagenet")(inputs)
outputs = ke.layers.Lambda(lambda x: tf.compat.v1.image.resize_bilinear(x, size=(512,1024)))(outputs)
outputs = ke.layers.Conv2D(2, 1, activation="softmax")(outputs)
model = ke.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=ke.optimizers.RMSprop(lr=0.001), loss=ke.losses.CategoricalCrossentropy())
images = np.zeros((1,512,1024,3), dtype=np.float32)
targets = np.zeros((1,512,1024,2), dtype=np.float32)
model.train_on_batch(images, targets)
【问题讨论】:
-
你的批量大小是多少?
-
是1。(我是“channel_last”数据格式)
-
这很有趣。您是否尝试过减小图像尺寸?让我们说 64*128 ?只是为了确定不是因为那个?
-
是的,输入大小限制在 700x512 左右……
-
很高兴尝试和总结
标签: python-3.x tensorflow tensorflow2.0 tf.keras