Работа с входными данными в CNN формы (n_sample, 1, 100, 4)
, где каждый экземпляр имеет форму (1 x 100 x 4)
.
print('Input shape before sampling: ' ,Train_X.shape, Train_Y.shape)
Input shape before sampling: (56646, 1, 100, 4) (56646,)
Поскольку мой набор данных сильно несбалансирован, я решил использовать технику SMOTE для повторной выборки класс меньшинства. Тем не менее, поскольку SMOTE Estimator ожидал ввода dim <= 2, я сглаживаю входное значение n <code>x * ny как:
#..reshape (flatten) Train_X for SMOTE resampling
n_samples, k, nx, ny = Train_X.shape
Train_X = Train_X.reshape((n_samples,nx*ny))
#..resample
smote = SMOTE('minority')
X_resample, Y_resample = smote.fit_sample(Train_X, Train_Y)
print('Input shape after sampling: ' , X_resample.shape, Y_resample.shape)
Input shape after sampling: (85296, 400) (85296,)
, что затем переопределяет класс меньшинства.
Но тогда сверточный слой ожидает dim 4 ввода: (n_sample, 1, 100, 4)
, поэтому необходимо изменить форму преобразованного входа в это измерение, как показано в следующем сообщении об ошибке:
ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (85296, 400)
Как мне затем изменить форму преобразованного входа обратно в 4D как (85296, 1, 100, 4)
от (85296, 400)
?