【问题标题】:Dense net is not running with large Dataset密集网络未与大型数据集一起运行
【发布时间】:2019-07-30 06:19:51
【问题描述】:

我有以下数据集

图像大小:256 x 256 x 3
批量大小 = 3
29924 张图片

def get_model():
    #base_model = application(weights='imagenet', input_shape=(image_size,image_size,3), include_top=False)
    #base_model.trainable = False
    base_model = DenseNet201(weights='imagenet', input_shape=(image_size,image_size,3), include_top=False)
    model = models.Sequential()
    model.add(base_model)
    model.add(layers.GlobalAveragePooling2D())
    model.add(layers.Dense(1024, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(196, activation='softmax'))
    model.summary()

    #optimizer = optimizers.SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
    optimizer = optimizers.RMSprop(lr=0.0001)
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['acc'])

    return model

当我尝试运行模型时,它卡住了很长时间
并且内存使用量一直在上升,最后死了

  1. 如何计算特定模型的特定内存使用量? 对于我的情况 Densenet201
  2. 有没有办法更快地运行我的模型?(甚至运行)
  3. 有什么建议吗?

【问题讨论】:

    标签: image-processing deep-learning conv-neural-network


    【解决方案1】:
    1. 如何计算特定模型的特定内存使用量?对于我来说 Densenet201

    以字节为单位获取模型大小的一种方法是将参数的数量(调用 model.summary() 时的输出)乘以 4 - 参数的类型为 Float32,一个字节中有 8 位。

    1. 有没有办法更快地运行我的模型?(甚至运行)
    2. 有什么建议吗?

    我不确定你所说的 2 是什么意思。 一般来说,您应该:

    • 检查模型编译步骤是否导致问题,在这种情况下,您应该尝试使用较小的模型,因为您的计算机无法将 DenseNet-201 保存在内存中。
    • 检查一次加载(大型)数据集是否会导致问题。如果是这种情况,请考虑使用 ImageDataGenerator 类,特别是 .flow_from_directory 函数,这样您就只能将当前/排队的批次存储在内存中。
    • 如果对model.fit() 的调用是问题,请尝试减少batch_size 参数(警告,这会减慢训练速度)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-13
      • 2020-09-21
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2012-05-15
      • 1970-01-01
      相关资源
      最近更新 更多