首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError: sequential_1层的输入0与层::预期的min_ndim=4,found ndim=2不兼容。接收到的完整形状:(32768,1)

ValueError: sequential_1层的输入0与层::预期的min_ndim=4,found ndim=2不兼容。接收到的完整形状:(32768,1)
EN

Stack Overflow用户
提问于 2021-05-23 12:08:47
回答 1查看 85关注 0票数 0
代码语言:javascript
复制
import keras
from keras.models import Sequential
from keras.applications.vgg16 import VGG16
from keras.layers import Dense, InputLayer, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D, GlobalMaxPooling2D
from keras.preprocessing import image
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from tqdm import tqdm
from sklearn.model_selection import train_test_split
y = train['class']
images_train, images_test, y_train, y_test = train_test_split(images, y, random_state=42, 
test_size=0.2, stratify = y)

y_train = pd.get_dummies(y_train)
y_test = pd.get_dummies(y_test)

base_model = VGG16(weights='imagenet', include_top=False)

images_train = base_model.predict(images_train)
images_train.shape

images_test = base_model.predict(images_test)
images_test.shape

images_train = images_train.reshape(2321, 8*8*512)
images_test = images_test.reshape(581, 8*8*512)
max = images_train.max()
images_train = images_train/max
images_test = images_test/max

images_train.shape

model=Sequential()

model.add(Conv2D(input_shape=(10, 8, 8, 512),filters=4,kernel_size= 
(3,3),padding="same",activation="relu"))
model.add(Conv2D(filters=64,kernel_size=(3,3),padding="same",activation="relu"))

model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(4, activation='softmax'))

from keras.callbacks import ModelCheckpoint
mcp_save = ModelCheckpoint('weight.hdf5', save_best_only=True, monitor='val_loss', mode='min')

model.compile(loss='categorical_crossentropy',optimizer='Adam',metrics=['accuracy'])
import tensorflow as tf
train_data = tf.data.Dataset.from_tensor_slices((images_train, y_train))
valid_data = tf.data.Dataset.from_tensor_slices((images_test, y_test))
model.fit(train_data, epochs=40, validation_data=valid_data, callbacks=[mcp_save], 
batch_size=10)

错误:

我已经创建了一个由四个不同的活动组成的数据集,这些活动是

  1. 吹鼻涕
  2. 掉下来
  3. 胸痛
  4. 从左、右、前三个视图中呕吐,总共有180个视频。然后我从每个活动视频中提取帧,所以我总共有2902帧。我试着把这些帧输入CNN模型。我得到了错误,如上面所示,作为一个学习者,我无法解决这个错误。请帮我解决这个错误。
EN

回答 1

Stack Overflow用户

发布于 2021-05-23 20:35:28

我无法从您的代码中读到那么多,但是您的输入形状对网络来说是错误的。您尝试将images_train输入到VGG网络中。VGG网需要输入一个四维的numpy数组.它有形状(batch_size、通道、宽度、高度)或(batch_size,宽度、高度、通道),这取决于您是选择了"channels_last“还是"channels_first”数据格式(我不知道该在哪里设置,但是其中一个应该工作)。

您对网络的输入没有此形状,这就是您收到错误的原因。尝试运行np.shape(images_train),然后您可以看到输入的形状。如果这不是四维的,那么您的输入就不适合VGG网.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67659576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档