我正在尝试用Python和Keras一起用自己的数据集来训练一个简单的MLP。这个数据集包含一个1024x1204大小的规范化图像,我需要这个分辨率,因此我不能缩小图像的大小。我使用Tesla V100和16 use 进行培训。
首先,我的目标是,在我能够调整这个模型(制作一个cnn等)之前,让它工作起来,但实际上它没有工作,因为:
ResourceExhaustedError (参见上面的回溯):OOM,当使用shape1048576,4096,并在/job上键入float /job:localhost/replica:0/task:0/device:GPU:0时,分配器GPU__bfc为0
这个错误发生在第一层,所以在训练开始之前。
我在朱莉娅训练的MLP没有记忆问题。
我试过的每一件事
朱莉娅的MLP (通量)
m = Chain(
Dense(1024*1024, 1024, relu),
Dense(1024, 256, relu),
Dense(256, 2),
softmax) |> gpu巨蟒中的MLP
model = Sequential()
model.add(Dense(4*1024, input_shape=(1024*1024,)))
model.add(Dense(1024, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))发布于 2019-08-18 08:36:31
在这种情况下,主要有三种情况:输入的大小、网络的大小(参数的数量)和GPU。遗憾的是,这些都被认为是大输入,所以您的第一个赌注将是拒绝批大小。将其转换为1,如果仍然如此,要么减少网络,要么(更有效地)减少输入大小。是的,这意味着信息在处理前会从信号中丢失,但是你会惊讶于网络能从较小分辨率的图像中推断出什么。不过,我知道我不想放弃这些信息,所以要先处理批量大小。例如,762x762x3输入可以运行在16 on的批处理大小为6的Xception上,但不能运行批处理大小8。至于网络体系结构,这些密集的网络输出大小是巨大的。可能是不必要的。是的,所以也许把它放低一点。而且,就像Matias所说的,通过卷积来减少成本是非常推荐的。
https://stackoverflow.com/questions/57539335
复制相似问题