代码之家  ›  专栏  ›  技术社区  ›  Lorick Jain

ValueError:检查输入时出错:预期conv3d\u 1\u输入具有形状(704,11,3,1),但获得具有形状的数组(72000,704,11,3)

  •  1
  • Lorick Jain  · 技术社区  · 7 年前

    我正在将图像传送到3D卷积网络。该图像是704 x 11 x 3图像,我得到以下错误。列车图像数量为72000,CNN的输入形状为 (704,11,3,1)

    ValueError:检查输入时出错:预期conv3d\u 1\u输入具有形状(704,11,3,1),但获得具有形状的数组(72000,704,11,3)

    下面是我用keras编写的代码,用于向网络提供信息。

    x = cv2.imread(image_path)
    print (x.shape)
    x = np.reshape(x,(1, num_features))
    data_x.append(x)
    ...
    
    # After splitting to train and validation and test
    ...
    
    train_x = data['train_x']
    test_x = data['test_x']
    validate_x = data['validate_x']
    
    #Convert into float and normalize
    train_x = train_x.astype('float32')
    test_x = test_x.astype('float32')
    validate_x = validate_x.astype('float32')
    train_x = train_x.reshape(train_x.shape[0], 704, 11, 3).astype('float32')
    test_x = test_x.reshape(test_x.shape[0], 704, 11, 3).astype('float32')
    validate_x = validate_x.reshape(validate_x.shape[0], 704, 11, 3).astype('float32')
    train_x = train_x/255
    test_x = test_x/255
    validate_x = validate_x/255
    data['train_x'] = train_x
    data['test_x'] = test_x
    data['validate_x'] = validate_x
    
    ... 
    train_x = np.expand_dims(train_x, axis=0)
    validate_x = np.expand_dims(validate_x, axis=0)
    test_x = np.expand_dims(test_x, axis=0)
    ...
    model = Sequential()
    model.add(Conv3D(8, kernel_size = (3,3,3),data_format="channels_last", 
     activation = 'linear', input_shape=(704,11,3,1), padding='same'))
    ....
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Maxim    7 年前

    尝试更改 axis :

    # makes train_x: (?, 704, 11, 3, 1)
    train_x = np.expand_dims(train_x, axis=-1)
    ...
    

    根据错误消息, train_x 尚未实际重塑,因此请仔细检查是否实际调用了此操作。