我正在学习keras并尝试自己运行自己的模型。 输入数据是图像,输出数据是转向数据 问题是我认为Input_shape有问题。 我试过一些人们建议的方式
但我无法修复错误...... 我想我几乎已经解决了,但我不知道如何添加第一维(无,...) 你能帮我吗?请...阅读
这是我的代码
#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)