我正在创建一个视频分类模型,我提取了所有图像特征并用它构建了一个数据集。当我尝试适应我的代码时,它显示与我的数据集形状相关的错误。我尝试了不同的形状,但没有任何效果。有谁知道这个吗?
下面是我的 CNN 模型的代码。
model = Sequential()
#building a Cnn network
model.add(Conv2D(filters=12, kernel_size=(3,3), activation='relu', input_shape=(18,40,1)))
model.add(MaxPooling2D((2,2)))
# completing our model with a simple dense layer
model.add(Dense(24, activation='relu'))
model.add(Dense(2, activation='softmax'))
下面是我的 X 和 y 形状。
X - (18,40)
y - (18,)
我尝试拟合我的模型,但它显示以下错误。
ValueError: in user code:
File "/opt/conda/lib/python3.10/site-packages/keras/engine/training.py", line 1284, in train_function *
return step_function(self, iterator)
File "/opt/conda/lib/python3.10/site-packages/keras/engine/training.py", line 1268, in step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/opt/conda/lib/python3.10/site-packages/keras/engine/training.py", line 1249, in run_step **
outputs = model.train_step(data)
File "/opt/conda/lib/python3.10/site-packages/keras/engine/training.py", line 1050, in train_step
y_pred = self(x, training=True)
File "/opt/conda/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/opt/conda/lib/python3.10/site-packages/keras/engine/input_spec.py", line 298, in assert_input_compatibility
raise ValueError(
ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 18, 40, 1), found shape=(None, 40)
最好先重塑,然后创建 CNN 模型。
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from keras.utils import to_categorical
X = np.random.rand(18, 40) # Replace with your actual image data
y = np.random.randint(2, size=18) # Replace with your actual labels
X = np.reshape(X, (18, 40, 1))
y = to_categorical(y, num_classes=2)
model = Sequential()
model.add(Conv2D(filters=12, kernel_size=(3, 3), activation='relu', input_shape=(18, 40, 1))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(24, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X, y, epochs=10, batch_size=1)