ValueError:检查输入时出错:期望reshape_1_input具有形状(无,70,280)但是具有形状的数组(70,280)

时间:2018-04-01 06:28:55

标签: deep-learning keras dimension sequential

我正在学习keras并尝试自己运行自己的模型。 输入数据是图像,输出数据是转向数据 问题是我认为Input_shape有问题。 我试过一些人们建议的方式

  1. np.expand_dims
  2. model.summary()
  3. 但我无法修复错误...... 我想我几乎已经解决了,但我不知道如何添加第一维(无,...) 你能帮我吗?请...阅读

    这是我的代码

    #Import Keras and ...
    from keras import backend as K
    from keras.models import Sequential
    from keras.layers.convolutional import Conv2D
    from keras.layers.convolutional import MaxPooling2D
    from keras.layers.core import Activation
    from keras.layers.core import Flatten
    from keras.layers.core import Dense
    from keras.layers.core import Reshape
    from keras.optimizers import Adam
    from keras.layers.normalization import BatchNormalization
    
    from PIL import Image
    import matplotlib.pyplot as plt
    import numpy as np
    import os
    import time
    
    
    #Parameters
    NB_EPOCH=20
    BATCH_SIZE=100
    VERBOSE=1
    OPTIMIZER=Adam()
    VALIDATION_SPLIT=0.2
    IMG_ROWS,IMG_COLS=280, 70
    INPUT_SHAPE=(1,IMG_ROWS, IMG_COLS)
    
    #Path
    image_path = 'C:/Users\JUNG HYEONG SEOK/Keras/Train_data_img/'
    text_path = 'C:/Users\JUNG HYEONG SEOK/Keras/Train_data_txt/'
    img_list=os.listdir(image_path)
    
    
    #Define function
    def read_label() : # Read the whole training labels
    
        Text_steering = open("%sSteering_Data.txt" % text_path, 'r')
    
        Steering_label = Text_steering.read().splitlines()
    
        return Steering_label
    
    def read_images(img_list) : # Read the training images by batch size
    
        images = []
    
        for name in img_list:
    
            img = Image.open('%s%s'%(image_path, name))
            img_arr=np.array(img)
            img_dims=np.expand_dims(img_arr, axis=1)
            images.append(img_dims)
    
        return images
    
    
    #Model
    model = Sequential()
    input_shape=(70,280)
    model.add(Reshape(input_shape+(1,), input_shape=input_shape))
    
    #1st layer
    model.add(Conv2D(24, kernel_size=5, padding="same",data_format='channels_first'))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2)))
    model.add(BatchNormalization())
    
    #2nd layer
    model.add(Conv2D(36, kernel_size=5, padding="same"))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2)))
    model.add(BatchNormalization())
    
    #3rd layer
    model.add(Conv2D(48, kernel_size=5, padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization())
    
    #4th layer
    model.add(Conv2D(64, kernel_size=5, padding="same"))
    model.add(Activation("relu"))
    model.add(BatchNormalization())
    
    #5th layer
    model.add(Flatten())
    model.add(Dense(1000))
    model.add(Activation("relu"))
    
    #Output layer
    model.add(Dense(1))
    model.add(Activation('softmax'))
    model.summary()
    
    
    #Train Data
    print("Now I'm reading training data")
    x_train=read_images(img_list)
    y_train=read_label()
    
    #Compile
    
    model.compile(loss="mse", optimizer=OPTIMIZER)
    
    #Fit
    NB_FILES=18900
    for i in range(NB_FILES-1):
        history=model.fit(x_train[i],y_train,batch_size=BATCH_SIZE,epochs=NB_EPOCH,
                      verbose=VERBOSE,validation_split=VALIDATION_SPLIT)
    

0 个答案:

没有答案