Разница между строками и столбцами во входной матрице - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать автоэнкодер для экспрессии генов в рамках магистерской работы. Мой профессор порекомендовал мне начать с малого - взять один момент времени экспрессии гена в одном образце и создать сеть, которая могла бы представлять ее с меньшим количеством информации (затем расширить ее до временных рядов и провести некоторые эксперименты).

Итак, у меня есть 19040 генов (или функций) и 1 момент времени из 1 образца, который мне нужно ввести в автоэнкодер. По словам учителя, мой выходной слой также должен быть 19040.

Какой тип input_shape я должен иметь в качестве ввода?

  1. Input (shape = (1,19040))
  2. Вход (shape = (19040,1))
  3. Вход (shape = (19040,))

Есть ли разница между 1 и 2 в моем примере?

data  = pd.read_csv(filename, delimiter='\t', header=0)

data3d = array(data).reshape(5,19040,11)

x_train = keras.backend.transpose(data3d[0:1,:,1:2])

x = Dense(19040,activation = 'linear')(input_data)

encoded = Dense(10, activation='relu')(x)

decoded = Dense(19040, activation = 'linear')(encoded)

autoencoder = Model(input_data, decoded)

Редактировать:

Часть данных Data looks like this:

Первые 19040 строк - это 1 образец, затем новая начинается с того же EntrezID(идентификатор гена), и у меня есть 5 выборок и 10 временных точек в наборе данных.

1 Ответ

1 голос
/ 07 ноября 2019

Я считаю, что правильной формой для вашей задачи является выбор (1):

Input(shape=(1,19040))

В моделях Keras не указывается размер выборки в спецификации архитектуры - это выводится из фактического набора данных. Итак, если я понимаю вашу ситуацию, ваши входные данные будут иметь такую ​​общую форму:

(num_samples, num_time_steps, num_features)

, но сейчас num_samples = 1, num_time_steps = 1 и num_features= 19040, что согласуется с выбором (1), как упоминалось ранее.

Когда вы обобщите на большее количество временных шагов, вы измените на

Input(shape=(num_time_steps,19040))

Что касается второй части вашего вопроса,Я полагаю, что разница между вариантами (1) и (2) заключается в том, что в варианте (1) на каждом временном шаге вы будете иметь каждую функцию, плотно связанную с каждым выходным узлом, где в варианте (2) каждый временной шагодна функция подключена к каждому узлу.

Надеюсь, это поможет.

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