Подготовка данных для keras с вводом строк ДНК различной длины

#python #tensorflow #machine-learning #keras #deep-learning

#python #tensorflow #машинное обучение #keras #глубокое обучение

Вопрос:

Я пытаюсь построить модель, в которую я загружаю последовательности ДНК (в виде строк, которые выглядят как «ATGGATGC …», которые я преобразовал в [1,2,3,3,1,2,3,4 …]), и вывести 0, если модель считает, что последовательность не является белком, и 1, если она считает, что это так.

Я подготовил 11000 последовательностей, помеченных либо как 0, либо как 1 для обучения.

Я очень новичок в глубоком обучении, и я пытаюсь заставить свои данные работать с моделью глубокого обучения, но это не работает, и я не могу понять, почему. Одна из проблем может заключаться в том, что в руководстве говорилось, что лучше всего нормализовать данные, но все мои последовательности ДНК имеют переменную длину.

вот что я попробовал:

 import tensorflow as tf

model = tf.keras.models.Sequential()

model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(2, activation=tf.nn.softmax))

model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(numSequences, numLabels, epochs=3)
  

где numSequences — массив [[1,2,3,4,2,3,2,1….][1,2,3,2,1,…],…] содержащий различные последовательности ДНК различной длины, преобразованные в числа
, и numLabels — это соответствующие метки [0 или 1]. Но это ничего не делает, я получаю ValueError: не удалось преобразовать массив numpy в тензор (неподдерживаемый тип объекта numpy.ndarray)

Не могли бы вы указать мне правильное направление?

Ответ №1:

Я думаю, вам следует попробовать изменить слой Flatten() на входной слой. Затем укажите форму ваших входных данных. Например:

 model.add(tf.keras.Input(shape = (25,25, 1)))
  

** Обратите внимание, что форма в моем примере не будет соответствовать вашей. Вам нужно будет указать свою форму.