#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)))
** Обратите внимание, что форма в моем примере не будет соответствовать вашей. Вам нужно будет указать свою форму.