Можно ли сделать несколько входных и несколько выходных DNN модели, когда у меня разное количество выборки данных для каждой задачи - PullRequest
1 голос
/ 07 мая 2019

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

Я написал следующий код для реализации нескольких входов и нескольких выходов DNN. x_train_T1, x_train_T 2 - данные обучения (X) для Задачи 1 и Задачи 2 соответственно. y_train_T1 и y_train_T2 - это данные метки (y) для Задачи 1 и Задачи 2. x_train_T1 и x_train_T2 - это одинаковые векторы признаков измерения (Оба имеют размерность 1443). Но количество этих данных другое. Для задачи 1 у меня есть 1213 выборок данных, а для задачи 2 - 1271 выборка данных.


input_T1_tensor=Input(shape=(x_train_T1.shape[1],),name='T1_input')
input_T2_tensor=Input(shape=(x_train_T2.shape[1],),name='T2_input')
concatenated=layers.concatenate([input_T1_tensor,input_T2_tensor],axis=-1)
x=Dropout(concatenated)
x=layers.Dense(x)
T1_layer=layers.Dense(10,activation='relu')(x)
T2_layer=layers.Dense(10,activation='relu')(x)
T1_out=layers.Dense(1,activation='sigmoid',name='T1_out')(T1_layer)
T2_out=layers.Dense(1,activation='sigmoid',name='T2_out')(T2_layer)
model=Model(inputs=[input_T1_tensor,input_T2_tensor],outputs=[T1_out,T2_out])
model.compile(loss={'T1_out':'binary_crossentropy','T2_out':'binary_crossentropy'},optimizer='adam',metrics=['accuracy'])
model.fit([x_train_T1,x_train_T2],[y_train_T1,y_train_T2],epochs=epoch,batch_size=batch,verbose=0,validation_split=0.1,callbacks=[early_stopping])

Когда я запускаю этот код, я получаю следующее сообщение об ошибке.

All input arrays (x) should have the same number of samples. Got array shapes: [(1213, 1443), (1271, 1443)]

Если у меня одинаковое количество образцов данных для каждой задачи, этот код хорошо работает.

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

1 Ответ

1 голос
/ 07 мая 2019

Нет, это невозможно. Это не ограничение Keras, а теоретическая проблема со структурой обучения с несколькими задачами, поскольку предполагается, что между образцами для каждой задачи существует соотношение 1: 1. Это означает, что для каждой задачи имеется одинаковое количество образцов.

Даже при выполнении градиентного спуска это не имело бы смысла, поскольку вы должны вводить одну выборку для каждой задачи / ввода одновременно, поэтому, если выборки для задачи не совпадают, вы не можете сделать это для некоторых выборок.

Обойти это невозможно.

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