运行Tf.Keras模型时内存不足

我正在构建一个模型,用于预测1148行160000列的数据,预测结果为1到9之间的数字。我之前在Keras中做过类似的事情,但现在在将代码转移到tensorflow.keras时遇到了麻烦。运行程序时会产生以下错误:

(1) 资源耗尽:在分配形状为(1148,1,15998,9)且类型为float的张量时发生00M错误……k:0/device:GPU:0 由分配器GPU_0_bfc引起…………..[[{{node conv1d/conv1d-0-0-TransposeNCHWToNWC-LayoutOptimizer}}]]

这是由以下代码引起的。看起来是内存问题,但我不知道为什么会出现内存问题。希望能得到一些建议。

num_classes=9y_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.02model.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)

编辑:模型摘要

层-输出形状-参数数

Input_1 (输入层) 无, 160000,1. 0 Conv1d (一维卷积层) 无,159998, 936 Flatten (扁平化层) 无,1439982. 0 Dense (全连接层) 无, 9. 12959847

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


回答:

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

  • 您使用的是什么硬件?有多少可用内存?
  • 代码中的哪个位置出现了错误?

您可以尝试以下几种方法:

  • 如果您还没有这样做,可以将32位浮点数改为16位浮点数(内存减少2倍)
  • 通过在model.fit中添加batch_size=16来减少批次大小(默认值为32)(内存减少2倍)
  • 如果这些还不够,您需要考虑对特征空间进行降维处理,因为您的特征空间维度非常高(160,000)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注