Python Keras CNN与一维数据
我的数据的每个实例都是一个包含72个元素的数组。我试图构建一个1D cnn来进行分类,但我得到了以下错误: 检查目标时出错:预期密集_31有3维,但得到了形状为(3560,1)的数组 这是我的代码:Python Keras CNN与一维数据,python,tensorflow,keras,cnn,Python,Tensorflow,Keras,Cnn,我的数据的每个实例都是一个包含72个元素的数组。我试图构建一个1D cnn来进行分类,但我得到了以下错误: 检查目标时出错:预期密集_31有3维,但得到了形状为(3560,1)的数组 这是我的代码: training_features = np.load('features.npy') training_labels = np.load('labels.npy') training_features = training_features.reshape(-1, 72, 1) model =
training_features = np.load('features.npy')
training_labels = np.load('labels.npy')
training_features = training_features.reshape(-1, 72, 1)
model = Sequential()
model.add(Conv1D(64, 3, activation='relu', input_shape=(72, 1)))
model.add(MaxPooling1D(2))
model.add(Conv1D(64, 3, activation='relu'))
model.add(MaxPooling1D(2))
model.add(Dense(64, activation='relu'))
model.add(Dense(28, activation='softmax'))
model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(training_features, training_labels, batch_size=32, epochs=3, validation_split=0.1)
我是初学者。对不起,如果我理解得不好。问题是,你从一个三维层开始,但在下面的任何层中都不会减少维度。
尝试添加
模型。在第一个密集层之前添加(flatte())
。问题是,您从三维层开始,但在以下任何层中都不会降低维度。
尝试添加
模型。在第一个密集层之前添加(flatte())
。检查输入是否正确。您可以共享两个*.npy文件(或者至少共享输入的形状)
希望这有帮助。谢谢 检查您的输入是否正确。您可以共享两个*.npy文件(或者至少共享输入的形状)
希望这有帮助。谢谢 谢谢你的回答!现在我得到了这个错误:检查目标时出错:预期稠密_2具有形状(28),但得到了具有形状(1)的数组。我的数据实际上不是图像。每个实例是由72个元素组成的数组。我应该如何配置输入形状?谢谢您的回答!现在我得到了这个错误:检查目标时出错:预期稠密_2具有形状(28),但得到了具有形状(1)的数组。我的数据实际上不是图像。每个实例是由72个元素组成的数组。我应该如何配置输入形状?谢谢您的帮助!training_功能的形状是(3560,72,1)。标签的形状是什么?training_标签的形状是(3560,)请使用
loss='sparse\u categorical\u crossentropy'
Hell是的,它很有效!非常感谢。你能告诉我我犯了什么错误吗?谢谢你的帮助!training_功能的形状是(3560,72,1)。标签的形状是什么?training_标签的形状是(3560,)请使用loss='sparse\u categorical\u crossentropy'
Hell是的,它很有效!非常感谢。你能告诉我我犯了什么错误吗?
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, Dense, MaxPooling1D, Flatten
from tensorflow.keras.optimizers import Adam
model = Sequential()
model.add(Conv1D(64, 3, activation='relu', input_shape=(72, 1)))
model.add(MaxPooling1D(2))
model.add(Conv1D(64, 3, activation='relu'))
model.add(MaxPooling1D(2))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(28, activation='softmax'))
model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
#model.fit(training_features, training_labels, batch_size=32, epochs=3, validation_split=0.1)
model.summary()
Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv1d_7 (Conv1D) (None, 70, 64) 256
_________________________________________________________________
max_pooling1d_6 (MaxPooling1 (None, 35, 64) 0
_________________________________________________________________
conv1d_8 (Conv1D) (None, 33, 64) 12352
_________________________________________________________________
max_pooling1d_7 (MaxPooling1 (None, 16, 64) 0
_________________________________________________________________
flatten (Flatten) (None, 1024) 0
_________________________________________________________________
dense_4 (Dense) (None, 64) 65600
_________________________________________________________________
dense_5 (Dense) (None, 28) 1820
=================================================================
Total params: 80,028
Trainable params: 80,028
Non-trainable params: 0
_________________________________________________________________