我正在尝试从CSV文件的数字数据集中应用CNN,但是尺寸存在问题。我的数据集包含26个要素/列和1200行/样本。数据集有3个标签。
Dataset = pd.read_csv("...", header=0)
features = ['...']
x = Dataset [features]
y = Dataset .Classifier
sc = PowerTransformer()
x = sc.fit_transform(x)
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.75)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=4))
model.add(LSTM(64))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=100, batch_size=8, verbose=1)
accuracy = model.evaluate(x_test, y_test)
print(accuracy)
我收到以下错误: ValueError:检查输入时出错:预期conv1d_1_input具有3维,但数组的形状为(900,26)
我不确定如何重塑数据。据我所知,我只需要一个向量。
答案 0 :(得分:0)
您部分正确。您确实需要一个向量,但是它必须具有不同的尺寸。
Conv1D图层作为输入:
输入形状:
具有形状的3 + D张量:batch_shape +(steps,input_dim)
在model.fit函数中,将批次大小设置为8。这意味着每步必须提供8个样本的集合(step =迭代,然后更新网络权重)。
您要做的是生成8个样本的集合(或批次),然后将它们提供给您的网络。