У меня есть 3D-вход (образцы, шаги, функции).Таким образом, каждый образец имеет цепочку шагов, которые имеют разные особенности.Теперь я хочу получить 2D-вывод (сэмплы, шаги), где у меня есть сэмплы, а на каждом шаге сэмпла вычисляется 0 или 1 из модели.
Так что я думаю, что это проблема последовательной двоичной классификации.У меня есть некоторые трудности с определением модели, особенно с выходным слоем.
Вот фигуры массивов-пустышек:
x_train.shape
# (200, 1657, 669)
x_test.shape
# (41, 1657, 669)
y_train.shape
# (200, 1657)
y_test.shape
# (41, 1657)
Я пробовал эту модель, но результат был не тот, который был у меняожидая
n_residues, n_features, n_outputs = trainX.shape[1], trainX.shape[2], trainy.shape[1]
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(n_residues,n_features)))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(Dropout(0.1))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit network
model.fit(trainX, trainy, epochs=epochs, batch_size=batch_size, verbose=verbose)
m_classes = model.predict_classes(x_test, verbose=0)
print(m_classes)
[ 36 36 59 32 16 32 36 804 1047 16 16 36 32 36
36 36 16 16 16 16 16 16 36 16 36 36 36 16
59 36 36 36 16 16 16 804 16 16 16 36 36]
Выходной сигнал представляет собой длинный вектор 41 для 41 выборки в тестовом наборе с классами 0 -1657, я полагаю.
Мой желаемый выход для тестового набора будетбыть 41 двоичным вектором длиной 1657.
Спасибо!