【问题标题】:ValueError: Input to `.fit()` should have rank 4. Got array with shape: (10, 20, 50, 50, 1)ValueError:`.fit()` 的输入应该有 4 级。得到的数组形状为:(10, 20, 50, 50, 1)
【发布时间】:2017-09-29 13:10:46
【问题描述】:

我的模特

model.add(Conv3D(nb_filters[0], kernel_dim1=nb_conv[0], 
kernel_dim2=nb_conv[0], kernel_dim3=nb_conv[0],
input_shape=(20, 50, 50,1), activation='relu'))
model.add(MaxPooling3D(pool_size=(nb_pool[0], nb_pool[0], nb_pool[0])))
model.add(Conv3D(nb_filters[1], kernel_dim1=nb_conv[0], 
kernel_dim2=nb_conv[0], kernel_dim3=nb_conv[0],activation='relu'))
model.add(MaxPooling3D(pool_size=(nb_pool[0], nb_pool[0], nb_pool[0])))
model.add(Dropout(0.8))
model.add(Flatten())
model.add(Dense(1024, init='normal', activation='relu'))
model.add(Dropout(0.8))
model.add(Dense(nb_classes,init='normal'))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adadelta',
metrics['accuracy'])

我的输入 numpy 数组

train_data=np.load('D:/muchdata-50-50-20.npy')
train=train_data[-10:]
test=train_data[-2:]
train1 = np.array([i[0] for i in train]).reshape(-1,20,50,50,1)
y_train =  [i[1] for i in train]
testx=np.array([i[0] for i in test]).reshape(-1,20,50,50,1)
testy=[i[1] for i in test]

这是预处理函数

datagen = ImageDataGenerator(featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)

这是合适的

datagen.fit(train1)

当我尝试运行时,我收到类似这样的错误

【问题讨论】:

  • @putonspectacles 我不明白如何在这段代码上使用它......因为我的 conv3d input_data 期望(20,50,50,1)......如果你知道如何请编辑我的代码并发布它

标签: python-3.x numpy image-processing keras conv-neural-network


【解决方案1】:

对于图像数据生成器,图像形状应设置为 4 级。所以,我认为您的 reshape 命令应该更改(我的建议)。对于 reshape -1,这实际上意味着“将多维转换为一维”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多