Самостоятельная модель AI начинает переоснащаться - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь создать ИИ для самостоятельного вождения, который может передвигаться в 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 эпох: График точности

Может кто-нибудь помочь, пожалуйста меня и укажите, какие ошибки я делаю.

...