Можно ли сверточную сеточную классификацию Keras добавить 1D дополнительную функцию?

Я построил успешную сверточную сеть, используя Keras, классифицирующую определенную активность мозга по ЭЭГ. Однако я хотел бы улучшить его, добавив дополнительную функцию, которая, как мы знаем, предсказывает эту активность мозга; age, который, конечно, является одномерным массивом другого масштаба. Как мне это сделать?

Могу ли я добавить возраст к "изображению" в качестве дополнительного измерения? Или я должен использовать возраст, чтобы классифицировать активность мозга в другой модели, а затем объединить две модели? Или есть варианты?

> X.shape  
 (745,13,60,1) (Trials, channels, frequencies, extra_dim)

> age.shape
(745,)

Спасибо за любой совет и подумать со мной!

Лучший,

Ханнеке

1 ответ

Не связано: почему дополнительный тусклый? Вы используете Conv2D? Вы, вероятно, должны получить лучшие результаты с Conv1D, с (exams, timeSteps, channels),

Также: вы убедились, что используете data_format='channels_first'? Керас по умолчанию data_format='channels_last',


Ответ для Conv2D:

Вы должны выбрать форму взаимодействия двух наборов данных. Это взаимодействие может быть очень креативным, и нет никаких правил. Две возможности:

  • Умножьте это 1D-значение где-нибудь, или добавьте, или подумайте о хороших операциях (требуется функциональная модель API с двумя входами).
  • Добавить возраст в качестве дополнительного канала для каждого шага (мне нравится этот)

Добавление возраста в качестве дополнительного канала:

x_with_age = np.empty((745,14,60,1)) 
age = age.reshape((745,1,1,1))

x_with_age[:,:13] = X
x_with_age[:,-1:] = age

Тренируй модель используя x_with_age в качестве ввода.


Если следовать предложению Conv1D:

#this is using channels_last, which is keras' default   
#if your data is channels_first, then just invert the shapes below

X = should be something like (745, 60, 13)

x_with_age = np.empty((745,60,14)) 
age = age.reshape((745,1,1))

x_with_age[:,:,:13] = X
x_with_age[:,:,-1:] = age
Другие вопросы по тегам