Следующее основано на открытом исходном коде авторов в статье ниже: https://arxiv.org/abs/1808.03668
Я заменил их 2D сверточные слои одномерными сверточными слоями.
Однако мне нужно изменить форму моих входных данных, чтобы они работали со слоями conv1d. Типичная ошибка выглядит следующим образом: ValueError: Ошибка при проверке ввода: ожидалось, что input_1 будет иметь 3 измерения, но получил массив с формой (39413, 100, 40, 1)
Ниже приведена распечатка того, как входные данные имеет форму для слоев Conv2D:
[[[[ 0.40827462]
[-0.50940506]
[ 0.40357732]
...
[-0.41494966]
[ 0.38972651]
[-0.46409597]]
[[ 0.40827462]
[-0.6042721 ]
[ 0.40357732]
...
Пожалуйста, помогите в том, как заданные входные данные c должны быть изменены и сформированы перед их подачей в слои Conv1D? Кроме того, какой правильный код?
Большое спасибо за любые отзывы.
Ниже приведен пример кода, показывающий, как данные подготавливаются и формируются для слоев Conv1D. Не знаю, что вызывает ошибку в коде:
def prepare_x(data):
df1 = data[:40, :].T
return np.array(df1)
def get_label(data):
lob = data[-5:, :].T
return lob
def data_classification(X, Y, T):
[N, D] = X.shape
df = np.array(X)
dY = np.array(Y)
dataY = dY[T - 1:N]
dataX = np.zeros((N - T + 1, T, D))
for i in range(T, N + 1):
dataX[i - T] = df[i - T:i, :]
return dataX.reshape(dataX.shape+ (1,)), dataY
dec_train = np.loadtxt('/Train_Dst_NoAuction_ZScore_CF_1.txt')
dec_test = np.loadtxt('/Test_Dst_NoAuction_ZScore_CF_3.txt')
# extract data from the dataset
train_lob = prepare_x(dec_train)
test_lob = prepare_x(dec_test)
# extract label from the dataset
train_label = get_label(dec_train)
test_label = get_label(dec_test)
# prepare training data.
trainX_CNN, trainY_CNN = data_classification(train_lob, train_label, T=100)
trainY_CNN = trainY_CNN[:,3] - 1
trainY_CNN = np_utils.to_categorical(trainY_CNN, 3)
# prepare test data.
testX_CNN, testY_CNN = data_classification(test_lob, test_label, T=100)
testY_CNN = testY_CNN[:,3] - 1
testY_CNN = np_utils.to_categorical(testY_CNN, 3)