Я пытаюсь создать ИИ для самостоятельного вождения, который может передвигаться в GTA-San Andreas, следя за видеороликами sentdex по созданию ИИ для самостоятельного вождения для GTA-V, но моя модель всегда начинает наряжаться после 4 эпох или около того .
Даже после удвоения набора данных, который у меня изначально был, модель все еще переоснащается.
Набор данных состоит из изображений в градациях серого (270x360) и распределяется в 250 .npy файлах с 1000 кадров каждый на общую сумму 250 000 кадров.
Я использую архитектуру Xception без каких-либо предварительно обученных весов в качестве модели. Код приведен ниже:
def create_model():
xception_model = Xception(include_top=False, weights=None, input_shape=dimensions)
x = xception_model.output
x = (GlobalAveragePooling2D()) (x)
x = (Dense(1024, activation='relu')) (x)
predictions = Dense(9, activation='softmax') (x)
model = Model(inputs=xception_model.input, outputs=predictions)
opt = adam(lr=1e-3, decay=1e-5)
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
return model
model = create_model()
epochs = 30
allhistory = {'val_loss':[], 'val_acc':[], 'loss':[], 'acc':[]}
for e in range(1,epochs+1):
data_order = [i for i in range(1,total_files+1)]
shuffle(data_order)
for count,i in enumerate(data_order):
try:
filename = f'/content/drive/My Drive/Dataset/processed_data-{i}.npy'
data_set = np.load(filename,allow_pickle=True)
print(f"\n{e+1}:{count+1}:Data-{i}.npy Loaded!")
X = np.array([np.repeat(data[0]/255.0,3,-1) for data in data_set]).reshape(-1,HEIGHT,WIDTH,3)
y = np.array([data[1] for data in data_set])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state = 5)
history = model.fit(X_train, y_train, validation_data = (X_test,y_test), epochs=1)
allhistory['val_loss'].extend(history.history['val_loss'])
allhistory['val_acc'].extend(history.history['val_acc'])
allhistory['loss'].extend(history.history['loss'])
allhistory['acc'].extend(history.history['acc'])
if (count+1)%10==0:
print('\nSAVING MODEL!')
model.save(f'/content/drive/My Drive/models/xceptionmodel-epoch-{e+1}.h5')
np.save('/content/drive/My Drive/models/allhistory.npy',np.array(allhistory))
except Exception as ex:
print(str(ex))
Вот график, показывающий, как точность и точность проверки начинают расходиться после 4 эпох: График точности
Может кто-нибудь помочь, пожалуйста меня и укажите, какие ошибки я делаю.