Недостаточно памяти при работе модели Tf.Keras - PullRequest
0 голосов
/ 09 октября 2019

Я строю модель для прогнозирования 1148 рядов 160000 столбцов с числом 1-9. Я делал подобное раньше в keras, но у меня возникли проблемы с переносом кода в tenorflow.keras. При запуске программы выдается следующая ошибка:

(1) Ресурс исчерпан: 00M при выделении тензора с формой (1148,1,15998,9) и типом float ...... k: 0/ устройство: GPU: 0 по распределителю GPU_0_bfc .............. [[{{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 плотный (плотный) нет, 9. 12959847

Всего параметров: 12,959,883 Обучаемые параметры 12,959,883

1 Ответ

0 голосов
/ 09 октября 2019

Без дополнительной информации сложно дать конкретный ответ.

  • на каком оборудовании вы работаете? Сколько памяти у вас доступно?
  • В каком месте кода возникает ошибка?

Некоторые вещи, которые вы можете попробовать:

  • изменитьот 32-разрядного с плавающей запятой до 16-разрядного с плавающей запятой, если вы еще этого не сделали (сокращение памяти в 2 раза)
  • уменьшите размер пакета, добавив batch_size=16 внутри model.fit (по умолчанию 32) (сокращение памяти в 2 раза)
  • Если этого все еще недостаточно, вам нужно подумать о применении уменьшения размерности к пространству объектов, которое является очень многомерным (160 000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...