DrLo Δημοσ. χθες στις 03:25 πμ Δημοσ. χθες στις 03:25 πμ (επεξεργασμένο) θέλω να φτιάξω μια custom metric συνάρτηση για το training σε ενός NN (που να μπορώ να τη χρησιμοποιώ και ως custom loss) θέλω αντι να χρησιμοποιώ πχ το 'mean_absolute_percentage_error' να χρησιμοποιώ το "max_absolute_percentage_error" def max_pe(y_true, y_pred) : absolute_percentage_error = tf.abs((y_true - y_pred) / y_true) * 100 return tf.reduce_max(absolute_percentage_error) το θέμα είναι ότι δε βγάζει το σωστό νούμερο και δε μπορώ να καταλάβω γιατί ακόμα και όταν απλά την καταγράφω σαν metric (δεν την έχω ως loss) αφού τελος πάντως τελειώσει το training , όταν υπολογίσω το maximum percentage το όταν πάρω το trained μοντελο για πάρω τα predictions , το maximum error είναι ~ 39% αλλά βλέποντας το history, στο epoch που "επιλέχθηκε" μετά το early stopping , λέει ότι το είναι 22% και δε βγάζει νόημα τι κάνω λάθος Επεξ/σία χθες στις 03:26 πμ από DrLo
stefanos50 Δημοσ. πριν από 22 ώρες Δημοσ. πριν από 22 ώρες (επεξεργασμένο) 12 ώρες πριν, DrLo είπε θέλω να φτιάξω μια custom metric συνάρτηση για το training σε ενός NN (που να μπορώ να τη χρησιμοποιώ και ως custom loss) θέλω αντι να χρησιμοποιώ πχ το 'mean_absolute_percentage_error' να χρησιμοποιώ το "max_absolute_percentage_error" def max_pe(y_true, y_pred) : absolute_percentage_error = tf.abs((y_true - y_pred) / y_true) * 100 return tf.reduce_max(absolute_percentage_error) το θέμα είναι ότι δε βγάζει το σωστό νούμερο και δε μπορώ να καταλάβω γιατί ακόμα και όταν απλά την καταγράφω σαν metric (δεν την έχω ως loss) αφού τελος πάντως τελειώσει το training , όταν υπολογίσω το maximum percentage το όταν πάρω το trained μοντελο για πάρω τα predictions , το maximum error είναι ~ 39% αλλά βλέποντας το history, στο epoch που "επιλέχθηκε" μετά το early stopping , λέει ότι το είναι 22% και δε βγάζει νόημα τι κάνω λάθος Τι ακριβώς εννοείς ότι δεν βγάζει το σωστό νούμερο; Δεν είναι καλό το performance; Είναι εκτός του εύρους της μετρικής; Το ότι η μετρική διαφέρει από αυτή του όταν έκανες training με όταν το ξανά φορτώσεις και κάνεις testing μπορεί να έχει πολλές αιτίες. Έχεις callback για να κρατάς το καλύτερο μοντέλο και με βάση κάποιο κανόνα ή το τελευταίο μετά το early stopping; Γενικά πολύ ασαφής η περιγραφή σου αν μπορείς ανέβασε ολόκληρο τον κώδικα ή γράψε πιο αναλυτικά το τι ακριβώς κάνεις που εκπαιδεύεις και που τεστάρεις και τι θέλεις να πετύχεις. Η σύνταξη της συνάρτησης που έχεις βάλει μέχρι στιγμής δεν νομίζω ότι έχει κάποιο λάθος. Επεξ/σία πριν από 22 ώρες από stefanos50
DrLo Δημοσ. πριν από 22 ώρες Μέλος Δημοσ. πριν από 22 ώρες (επεξεργασμένο) 12 λεπτά πριν, stefanos50 είπε Τι ακριβώς εννοείς ότι δεν βγάζει το σωστό νούμερο; Δεν είναι καλό το performance; Είναι εκτός του εύρους της μετρικής; Το ότι η μετρική διαφέρει από αυτή του όταν έκανες training με όταν το ξανά φορτώσεις και κάνεις testing μπορεί να έχει πολλές αιτίες. Γενικά αν μπορείς ανέβασε ολόκληρο τον κώδικα ή γράψε πιο αναλυτικά το τι ακριβώς κάνεις που εκπαιδεύεις και που τεστάρεις. Δεν εννωω ότι έχει διαφορετική τιμή (λίγο) σε διαφορετικά τρεξίματα όπως λες. Αυτό είναι φυσικά αναμενόμενο. ενωω αυτό που βλέπω στο training history με το απο τέλεσμα του trained μοντέλου από ΤΟ ΙΔΙΟ αυτό training. Εννωω, ότι όταν πάρω το trained μοντέλο στο τέλος, έξω από το loop του training, δώσω ξανά , ανεξάρτητα από το training validation x και πάρω τα predictions και υπολογισω το maxmum percentage error (με άλλο κώδικά , επιβεβαίωμένο, ακόμα και αν παρω τις τιμές και το κάνω σε excel) των προβλέψεων είναι 42% πχ ένω το metric που βλέπω στο history είναι πολύ διαφορετικό. Στο epoch που επιλέγεται εντέλει ως αυτό στο οποίο γίνοτναι restore τα weights όταν ενεργοποιηθεί το early stoping βλέπω ότι το "val_max_pe" είναι ~28%. οσάν δηλαδή ο υπολογισμός σε αυτό το function και μόνο να είναι λάθος το δοκίμασα συμβουλές από το chatgpt για αυτό που προτείνει ως με from keras import backend as K def max_pe(y_true, y_pred): percentage_errors = K.abs((y_true - y_pred) / y_true) * 100 return K.max(percentage_errors) μου δίνει είτε το ίδιο με αυτό που βγάζω εγώ , είτε περιέργως, παίζοντας με τα axis στο K.max() Ακριβως το ίδιο νούμερο με το ΜΕΑΝ percenage error (το υπάρχον mape δηλαδή). Επεξ/σία πριν από 22 ώρες από DrLo
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα