Как преобразовать данные Conv2D в Conv1D? [КЕРАС] - PullRequest
0 голосов
/ 18 июня 2020

Следующее основано на открытом исходном коде авторов в статье ниже: 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...