Передача последовательности писем в CNN - Keras - PullRequest
1 голос
/ 13 октября 2019

У меня есть данные следующего формата:

  1. Последовательность из 150 букв
  2. Буквы могут быть только A, B, C, D, E.
  3. у меня есть 20k последовательностей
  4. 10k последовательностей помечены 1, а остальные 10k помечены 0

Я преобразовал эти 150 букв в однофокусные векторыделаем следующее:

from skimage.transform import resize
import numpy as np
def transform(data): #transform sequence into one hot encoding
    def one_hot_encode(seq):
        mapping = dict(zip("ABCDE", range(5)))    
        seq2 = [mapping[i] for i in seq]
        return np.eye(5)[seq2]

    train = np.zeros((len(data), 150, 5, 1), dtype=np.uint8)
    for idx, d in enumerate(data):
        seq = one_hot_encode(d)
        seq = resize(seq, (150, 5, 1), mode='constant', preserve_range=True)
        train[idx] = seq.astype('float32')
    return train

Теперь я хочу просто передать эти данные в простой CNN, построенный из Keras. Я строю модель как:

model = Sequential()
model.add(Conv2D(64,kernel_size=(3,3),activation='relu',input_shape=(150,5,1)))
model.add(Conv2D(32, kernel_size=3, activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.summary()
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

Теперь я пытаюсь тренироваться, выполняя: history = model.fit(X_train, Y_train, epochs=100, verbose=False, validation_split=0.25, batch_size=10)

Но это продолжает выдавать следующую ошибку:

InternalError: не удалось инициализировать StreamExecutor для устройства CUDA с порядковым номером 0: Internal: не удалось вызвать cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY: не хватает памяти;Общее количество памяти: 11721506816

Я тренировал изображения с размерами 512x512x3, которые имеют гораздо больше входных размеров, чем этот. Так почему же это вызывает эту ошибку?

1 Ответ

1 голос
/ 13 октября 2019

Видимо, ваша видеокарта не имеет достаточно памяти для обработки входных данных, следовательно, ошибка. Попробуйте уменьшить размер партии до 4 или 2 и снова запустить ту же модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...