qq_38402311 2021-05-08 15:16 采纳率: 0%
浏览 29

预期具有形状(120、120、3),但获得了具有形状(60、60、4)的数组

有没有大佬能解决这个问题,在此跪谢"Traceback (most recent call last):
  File "E:/work/Remote-sensing-master/Remote-sensing-master/Remote-sensing-master/model.py", line 168, in <module>
    k = model.predict(img_tensor,)
  File "E:\Anaconda\lib\site-packages\keras\engine\training.py", line 1149, in predict
    x, _, _ = self._standardize_user_data(x)
  File "E:\Anaconda\lib\site-packages\keras\engine\training.py", line 751, in _standardize_user_data
    exception_prefix='input')
  File "E:\Anaconda\lib\site-packages\keras\engine\training_utils.py", line 138, in standardize_input_data
    str(data_shape))
ValueError: Error when checking input: expected conv2d_1_input to have shape (120, 120, 3) but got array with shape (60, 60, 4)"

以下是代码:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, ZeroPadding2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import rmsprop

from PIL import Image
import numpy as np
from keras.preprocessing import image
n_classes = 3
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=(120, 120, 3)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))


model.compile(optimizer = rmsprop(lr=0.0001, decay=1e-6),
                   loss = 'categorical_crossentropy', 
                   metrics = ['accuracy'])

batch_size = 16
#batch_size = 128

train_datagen = ImageDataGenerator(
        rescale = 1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        'dataset/train',
        target_size=(120, 120),
        batch_size = 16,
        class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
        'dataset/validation',
        target_size=(120, 120),
        batch_size=16,
        class_mode = 'categorical')
#
model.fit_generator(
        train_generator,
        steps_per_epoch=701 // 16,
        epochs = 8,
        validation_data=validation_generator,
        validation_steps= 79 // 16
        )
#validation_steps= 800 // 128
sample_shape = 60
test_image = Image.open('dataset/530m_2_copy.png')
#width, height = test_image.size
box = (0, 0, sample_shape, sample_shape)
width = test_image.size[0]
height = test_image.size[1]
print(width,height)
for x in range(0, width, 3):
    for y in range(0, height, 3):
        if x + sample_shape < width:
            x2 = x + sample_shape
        else:
            break
        if y + sample_shape < height:
            y2 = y + sample_shape
        else:
            break

        box = (x, y, x2, y2)
        sample = test_image.crop(box)
        img = sample
        img_tensor = image.img_to_array(img)
        img_tensor = np.expand_dims(img_tensor, axis=0)
        img_tensor /= 255.
k = model.predict(img_tensor,)
print(k)

  • 写回答

3条回答 默认 最新

  • kaili_ya 2021-05-08 16:08
    关注

    这是你输入数据的问题,人家要的是120, 120, 3的输入,你的输入是60, 60, 4,要不是你预处理有问题,要不是你数据读取就出错了

     

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?