【问题标题】:Running out of memory when running Tf.Keras model运行 Tf.Keras 模型时内存不足
【发布时间】:2020-02-06 05:47:46
【问题描述】:

我正在构建一个模型来预测 160000 列的 1148 行到 1-9 的数量。我之前在 keras 中做过类似的事情,但是在将代码传输到 tensorflow.keras 时遇到了麻烦。运行程序会产生以下错误:

(1) 资源耗尽:00M 分配形状为 (1148,1,15998,9) 的张量并通过分配器 GPU_0_bfc 键入 float......k:0/device:GPU:0...... ………… [[{{node conv1d/conv1d-0-0-TransposeNCHWToNWC-LayoutOptimizer}}]]

这是由以下代码引起的。这似乎是一个内存问题,但我不确定为什么内存会是一个问题。建议将不胜感激。

num_classes=9
y_train = to_categorical(y_train,num_classes)
x_train = x_train.reshape((1148, 160000, 1))
y_train = y_train.reshape((1148, 9))

input_1 = tf.keras.layers.Input(shape=(160000,1))
conv1 = tf.keras.layers.Conv1D(num_classes, kernel_size=3, activation='relu')(input_1)
flatten_1 = tf.keras.layers.Flatten()(conv1)
output_1 = tf.keras.layers.Dense(num_classes, activation='softmax')(flatten_1)

model = tf.keras.models.Model(input_1, output_1)
my_optimizer = tf.keras.optimizers.RMSprop()
my_optimizer.lr = 0.02
model.compile(optimizer=my_optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=50, steps_per_epoch=20)
predictions = model.predict(x_test)

编辑:model.summary

Layer-Output shape-Param#

Input_1 (inputLayer) 无,160000,1。 0 Conv1d (Conv1D) 无,159998, 9 36 展平(Flatten)无,1439982。 0 稠密(Dense)无,9. 12959847

总参数:12,959,883 可训练参数 12,959,883

【问题讨论】:

  • 在你的问题中包含model.summary()的输出,仔细看参数个数
  • @MatiasValdenegro 帖子已更新摘要

标签: python tensorflow machine-learning keras tf.keras


【解决方案1】:

没有更多信息,很难给出具体答案。

  • 您在什么硬件上运行?您有多少可用内存?
  • 代码中的哪一点出现错误?

您可以尝试一些事情:

  • 从 32 位浮点数更改为 16 位浮点数(如果您还没有)(减少 2 倍内存)
  • 通过在model.fit 内添加batch_size=16 来减少批量大小(默认为32)(减少2 倍内存)
  • 如果这还不够,您需要考虑将降维应用到您的特征空间,这是非常高的维度 (160,000)

【讨论】:

    【解决方案2】:

    这听起来可能很傻,但在我的情况下,我遇到了 (1) 资源耗尽错误,因为我的主硬盘驱动器中没有足够的空间。清理一些空间后,我的训练脚本又开始工作了。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2023-03-16
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2016-02-25
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多