【发布时间】:2022-12-10 02:13:13
【问题描述】:
我正在尝试在多变量时间序列上使用 CNN,而不是图像上最常见的用法。特征的数量在 90 到 120 之间,具体取决于我需要考虑和试验的特征。这是我的代码
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
X_train_s = X_train_s.reshape((X_train_s.shape[0], X_train_s.shape[1],1))
X_test_s = X_test_s.reshape((X_test_s.shape[0], X_test_s.shape[1],1))
batch_size = 1024
length = 120
n_features = X_train_s.shape[1]
generator = TimeseriesGenerator(X_train_s, pd.DataFrame.to_numpy(Y_train[['TARGET_KEEP_LONG',
'TARGET_KEEP_SHORT']]),
length=length,
batch_size=batch_size)
validation_generator = TimeseriesGenerator(X_test_s, pd.DataFrame.to_numpy(Y_test[['TARGET_KEEP_LONG', 'TARGET_KEEP_SHORT']]), length=length, batch_size=batch_size)
early_stop = EarlyStopping(monitor = 'val_accuracy', mode = 'max', verbose = 1, patience = 20)
CNN_model = Sequential()
model.add(
Conv2D(
filters=64,
kernel_size=(1, 5),
strides=1,
activation="relu",
padding="valid",
input_shape=(length, n_features, 1),
use_bias=True,
)
)
model.add(MaxPooling2D(pool_size=(1, 2)))
model.add(
Conv2D(
filters=64,
kernel_size=(1, 5),
strides=1,
activation="relu",
padding="valid",
use_bias=True,
)
)
[... code continuation ...]
也就是说,我把特征作为一个维度,一定的行数作为另一个维度。但我得到这个错误
“ValueError:层“conv2d_5”的输入 0 与层不兼容:预期 min_ndim = 4,发现 ndim = 2。收到完整形状:(无,2)”
这被称为第一个 CNN 层。
【问题讨论】:
标签: python conv-neural-network