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

Python 运行Tf.Keras模型时内存不足,python,tensorflow,machine-learning,keras,tf.keras,Python,Tensorflow,Machine Learning,Keras,Tf.keras,我正在建立一个模型,预测1148行160000列的数量为1-9。我以前在keras中也做过类似的事情,但是在将代码传输到tensorflow.keras时遇到了问题。运行该程序会产生以下错误: (1) 资源耗尽:分配器GPU_0_bfc分配形状为(1148,115998,9)且类型为float的张量时为00米。。。。。。。。。。。。。。 [{{node conv1d/conv1d-0-0-TransposeNCHWToNWC-layoutuoptimizer}] 这是由以下代码引起的。这似乎是一

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

(1) 资源耗尽:分配器GPU_0_bfc分配形状为(1148,115998,9)且类型为float的张量时为00米。。。。。。。。。。。。。。 [{{node conv1d/conv1d-0-0-TransposeNCHWToNWC-layoutuoptimizer}]

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

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

图层输出形状参数#

输入_1(输入层)无,160000,1。0 Conv1d(Conv1d)无,159998,9 36展平(展平)无,1439982。0密集(密集)无,9。12959847

总参数:12959883可培训参数12959883


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

  • 你在用什么硬件?你有多少可用内存
  • 错误发生在代码中的哪一点
有些事情你可以试试:

  • 如果尚未更改,请将32位浮点更改为16位浮点(内存减少2倍)
  • 通过在
    model.fit内添加
    batch\u size=16
    来减少批大小(默认值为32)(内存减少2倍)
  • 如果这还不够,您需要考虑将降维应用到您的特征空间,这是非常高维的(160000)

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

      在您的问题中包括model.summary()的输出,并仔细查看parameters@MatiasValdenegro帖子已更新为摘要