मैं सीएनएन मॉडल बनाने की कोशिश कर रहा हूं, लेकिन कम सटीकता है :(

इसलिए, जब सत्यापन सटीकता में सुधार होना बंद हो जाता है, तो मैं SGD सीखने की दर को कम करना चाहता हूं।

मैं इसे कैसे बना और संकलित कर सकता हूं ??

-1
YeongHwa Jin 19 फरवरी 2019, 13:27

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप model.train_on_batch पर लूप करते हैं तो आप सीखने की दर को मैन्युअल रूप से बदल सकते हैं:

import keras.backend as K
from keras.optimizers import Adam
import sys

epochs = 50
batch_size = 32
iterations_per_epoch = len(x_train) // batch_size

lr = 0.01
model.compile(optimizer=Adam(lr), loss='some loss')

min_val_loss = sys.float_info.max
for epoch in range(epochs):
    for batch in range(iterations_per_epoch):
        model.train_on_batch(x_train, y_train)
        val_loss = model.evaluate(x_val, y_val)
        if val_loss >= min_val_loss:
            K.set_value(model.optimizer.lr, lr / 2.)
            lr /= 2.
        else:
            min_val_loss = val_loss

एक बार सत्यापन हानि कम होने के बाद सीखने की दर को कम करने का यह एक बहुत ही भोला तरीका है। मैं थोड़ा अधिक परिष्कृत नियम लागू करने का सुझाव दूंगा जैसे कि पिछले एक्स बैचों के लिए सत्यापन हानि कम नहीं हुई थी।

1
ian 19 फरवरी 2019, 23:42