pmav99 Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 (επεξεργασμένο) tl;dr: Βάλε τον κώδικα που έχω στο προηγούμενο post... Αν σε ενδιαφέρει να καταλάβεις το λάθος, η chunker επιστρέφει ένα generator. Για να πάρεις τις τιμές του generator θα πρέπει να τον κάνεις consume (να τον βάλεις δηλαδή σε ένα for, όπως έκανα στο προηγούμενο παράδειγμα). Εσύ περνάς απευθείας τον generator αντί για τις τιμές για αυτό και το TypeError. Διάβασε εδώ για περισσότερες πληροφορίες: https://realpython.com/introduction-to-python-generators/ Τρέξε και αυτό: my_chunks = chunker(train_x, 5) print(type(my_chunks)) first_batch = next(my_chunks) print(type(first_batch)) print(first_batch) Επεξ/σία 1 Σεπτεμβρίου 2018 από pmav99 1
Sheogorath Δημοσ. 1 Σεπτεμβρίου 2018 Μέλος Δημοσ. 1 Σεπτεμβρίου 2018 (επεξεργασμένο) 5 λεπτά πριν, pmav99 είπε tl;dr: Βάλε τον κώδικα που έχω στο προηγούμενο post... Αν σε ενδιαφέρει να καταλάβεις το λάθος, η chunker επιστρέφει ένα generator. Για να πάρεις τις τιμές του generator θα πρέπει να τον κάνεις consume (να τον βάλεις δηλαδή σε ένα for, όπως έκανα στο προηγούμενο παράδειγμα). Εσύ περνάς απευθείας τον generator αντί για τις τιμές για αυτό και το TypeError. Διάβασε εδώ για περισσότερες πληροφορίες: https://realpython.com/introduction-to-python-generators/ Τον έβαλα τον κώδικα για δοκιμή, τα τύπωνε. Νομίζω κατάλαβα, τι έκανα λάθος. Συνεπώς θα πρέπει πριν τα "καλέσω", να τρέξω τον generator σε μια λούπα και να τα αποθηκεύσω; Τώρα διαβάζω το λινκ. Είδα το update/edit, νομίζω κατάλαβα τον τρόπο. Επεξ/σία 1 Σεπτεμβρίου 2018 από Sheogorath
pmav99 Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 Το δεύτερο snippet εδώ δεν τυπώνει τίποτα... 1
Sheogorath Δημοσ. 1 Σεπτεμβρίου 2018 Μέλος Δημοσ. 1 Σεπτεμβρίου 2018 1 λεπτό πριν, pmav99 είπε Το δεύτερο snippet εδώ δεν τυπώνει τίποτα... Για κάποιο λόγο δεν το είχα δει, λογικά έγραφα όταν μπήκε ή κάτι τέτοιο. Το zip δεν γνωρίζω τι κάνει, πρώτη φορά το βλέπω, αλλά θα ψάξω documentation για αυτό, αρκετά σε κούρασα. Το έκανα, έβγαλε αυτά: Traceback (most recent call last): File "D:\Programs\Python\lib\site-packages\tensorflow\python\client\session.py", line 1361, in _do_call return fn(*args) File "D:\Programs\Python\lib\site-packages\tensorflow\python\client\session.py", line 1340, in _run_fn target_list, status, run_metadata) File "D:\Programs\Python\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 516, in __exit__ c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.InvalidArgumentError: logits and labels must be same size: logits_size=[1,2] labels_size=[12,2] [[Node: softmax_cross_entropy_with_logits_sg = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](softmax_cross_entropy_with_logits_sg/Reshape, softmax_cross_entropy_with_logits_sg/Reshape_1)]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:/Users/Sheo/PycharmProjects/CNN_ex/RNN_NAN_chunker.py", line 74, in <module> train_neural_network(x) File "C:/Users/Sheo/PycharmProjects/CNN_ex/RNN_NAN_chunker.py", line 64, in train_neural_network _, c = sess.run([optimizer, cost], feed_dict={x: epoch_x, y: epoch_y}) File "D:\Programs\Python\lib\site-packages\tensorflow\python\client\session.py", line 905, in run run_metadata_ptr) File "D:\Programs\Python\lib\site-packages\tensorflow\python\client\session.py", line 1137, in _run feed_dict_tensor, options, run_metadata) File "D:\Programs\Python\lib\site-packages\tensorflow\python\client\session.py", line 1355, in _do_run options, run_metadata) File "D:\Programs\Python\lib\site-packages\tensorflow\python\client\session.py", line 1374, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.InvalidArgumentError: logits and labels must be same size: logits_size=[1,2] labels_size=[12,2] [[Node: softmax_cross_entropy_with_logits_sg = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](softmax_cross_entropy_with_logits_sg/Reshape, softmax_cross_entropy_with_logits_sg/Reshape_1)]] Caused by op 'softmax_cross_entropy_with_logits_sg', defined at: File "C:/Users/Sheo/PycharmProjects/CNN_ex/RNN_NAN_chunker.py", line 74, in <module> train_neural_network(x) File "C:/Users/Sheo/PycharmProjects/CNN_ex/RNN_NAN_chunker.py", line 54, in train_neural_network cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y)) File "D:\Programs\Python\lib\site-packages\tensorflow\python\util\deprecation.py", line 250, in new_func return func(*args, **kwargs) File "D:\Programs\Python\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 1960, in softmax_cross_entropy_with_logits labels=labels, logits=logits, dim=dim, name=name) File "D:\Programs\Python\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 1875, in softmax_cross_entropy_with_logits_v2 precise_logits, labels, name=name) File "D:\Programs\Python\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 5108, in _softmax_cross_entropy_with_logits name=name) File "D:\Programs\Python\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper op_def=op_def) File "D:\Programs\Python\lib\site-packages\tensorflow\python\framework\ops.py", line 3271, in create_op op_def=op_def) File "D:\Programs\Python\lib\site-packages\tensorflow\python\framework\ops.py", line 1650, in __init__ self._traceback = self._graph._extract_stack() # pylint: disable=protected-access InvalidArgumentError (see above for traceback): logits and labels must be same size: logits_size=[1,2] labels_size=[12,2] [[Node: softmax_cross_entropy_with_logits_sg = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](softmax_cross_entropy_with_logits_sg/Reshape, softmax_cross_entropy_with_logits_sg/Reshape_1)]] Τα κοιτάω τώρα.
pmav99 Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 Για την ιστορία, λογικά έτσι πρέπει να διαβάσεις τα CSV: https://www.tensorflow.org/guide/datasets#consuming_csv_data Και τα batches τα παίρνεις λογικά με τη μέθοδο batch() ή padded_batch() https://www.tensorflow.org/api_docs/python/tf/contrib/data/CsvDataset#batch 1
Sheogorath Δημοσ. 1 Σεπτεμβρίου 2018 Μέλος Δημοσ. 1 Σεπτεμβρίου 2018 Labels δεν θεωρει τα y_test? Αυτά είναι (λογικά) 1Χ2 (one hot, δύο επιλογές).
Sheogorath Δημοσ. 1 Σεπτεμβρίου 2018 Μέλος Δημοσ. 1 Σεπτεμβρίου 2018 2 ώρες πριν, pmav99 είπε edit Ο οδηγός για το LaTeX είναι πρακτικά οι σημειώσεις μου από όταν έκανα το μεταπτυχιακό μου (εργασίες + διπλωματική). Λογικά θα είναι σε αρκετά σημεία outdated πλέον. Αν θες την γνώμη μου, LaTeX χωρίς σημειώσεις δεν γίνεται Edit 2 Επειδή είμαι με data από το κινητό, αν ανεβάσεις ένα dataset μεγέθους πχ 1MB θα τρέξω και τον κώδικα. Κάνε πχ ένα head -n 1000 στα *.csv και ξαναζίπαρε. Μου είχε διαφύγει εντελώς αυτό, θα το φτιάξω το βράδυ. Σε ευχαριστώ. Έκανα ένα φάκελο με 1200 samples train και 600 test. Για το μεγάλο, τα κλασε το Matlab όταν αποθήκευε τα τελευταία y_test, οπότε θα πρέπει να ανεβάσω το μεγάλο dataset σε Dropbox. dataset_small.zip
Fortistis Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 2 ώρες πριν, Sheogorath είπε logits_size=[1,2] labels_size=[12,2] Αυτό σημαίνει ότι η έξοδος του τελευταίου layer έχει άλλες διαστάσεις από αυτές που έχουν τα ground truth values σου. Τα labels τι ακριβώς είναι; Υ.Γ. Το να θέσεις specific seed είναι ΛΑΘΟΣ στο συγκεκριμένο task που προσπαθείς να κάνεις και εν γένει σε αυτό το field που κοιτάς atm. Ακόμα και εάν θέλεις να δεις το αποτέλεσμα του generator. ΜΗΝ ακολουθήσεις τέτοια πρακτική. Μπορείς σε παρακαλώ να δώσεις ένα παράδειγμα του τι θέλεις να κάνεις; Έχεις σαν είσοδο μία πρόταση "Ο fortistis είναι κουβάς" και θέλεις να έχεις ως έξοδο τι ακριβώς; Χμ.. Τώρα είδα ότι χρησιμοποιείς MNIST. Στο MNIST η είσοδος θα πρέπει να είναι `batch_size x 28 x 28` και η έξοδος `batch_size x 10`, εάν (για κάποιο περίεργο λόγο) θέλεις να χρησιμοποιήσεις RNNs. Σε CNN based method, η είσοδος θα πρέπει να είναι `batch_size x 1 x 28 x 28` και η έξοδος η ίδια με πριν. Υ.Γ. Τα παραπάνω θεωρώντας ότι για CNN έχεις τα channels αμέσως μετά το batch size. 1
pmav99 Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 (επεξεργασμένο) Αναφορά σε κείμενο Υ.Γ. Το να θέσεις specific seed είναι ΛΑΘΟΣ στο συγκεκριμένο task που προσπαθείς να κάνεις και εν γένει σε αυτό το field που κοιτάς atm. Ακόμα και εάν θέλεις να δεις το αποτέλεσμα του generator. ΜΗΝ ακολουθήσεις τέτοια πρακτική. Το να θέτεις specific seed είναι απολύτως σωστή τακτική εκεί που έχει νόημα να το κάνεις. Δηλαδή testing και debugging Επεξ/σία 1 Σεπτεμβρίου 2018 από pmav99 1
Fortistis Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 Αδερφέ, εάν πρόσεξες μίλησα για κάτι πολύ συγκεκριμένο. Εάν πιστεύεις ότι ξέρεις, τότε κάνε ό,τι καταλαβαίνεις. Εάν όχι, θαρρώ θα είναι προς συμφέρον σου να επωφεληθείς από άλλους που ξέρουν. Ό,τι πεις όμως. Έτσι είναι εάν έτσι πιστεύεις.
pmav99 Δημοσ. 1 Σεπτεμβρίου 2018 Δημοσ. 1 Σεπτεμβρίου 2018 (επεξεργασμένο) Αν έχεις όρεξη κάνε μια αναζήτηση σε οποιοδήποτε ML project για να δεις αν και πως χρησιμοποιούν seed και RandomState. Αλλά περί ορέξεως. Επεξ/σία 1 Σεπτεμβρίου 2018 από pmav99
Sheogorath Δημοσ. 2 Σεπτεμβρίου 2018 Μέλος Δημοσ. 2 Σεπτεμβρίου 2018 5 ώρες πριν, Fortistis είπε Αυτό σημαίνει ότι η έξοδος του τελευταίου layer έχει άλλες διαστάσεις από αυτές που έχουν τα ground truth values σου. Τα labels τι ακριβώς είναι; Υ.Γ. Το να θέσεις specific seed είναι ΛΑΘΟΣ στο συγκεκριμένο task που προσπαθείς να κάνεις και εν γένει σε αυτό το field που κοιτάς atm. Ακόμα και εάν θέλεις να δεις το αποτέλεσμα του generator. ΜΗΝ ακολουθήσεις τέτοια πρακτική. Μπορείς σε παρακαλώ να δώσεις ένα παράδειγμα του τι θέλεις να κάνεις; Έχεις σαν είσοδο μία πρόταση "Ο fortistis είναι κουβάς" και θέλεις να έχεις ως έξοδο τι ακριβώς; Χμ.. Τώρα είδα ότι χρησιμοποιείς MNIST. Στο MNIST η είσοδος θα πρέπει να είναι `batch_size x 28 x 28` και η έξοδος `batch_size x 10`, εάν (για κάποιο περίεργο λόγο) θέλεις να χρησιμοποιήσεις RNNs. Σε CNN based method, η είσοδος θα πρέπει να είναι `batch_size x 1 x 28 x 28` και η έξοδος η ίδια με πριν. Υ.Γ. Τα παραπάνω θεωρώντας ότι για CNN έχεις τα channels αμέσως μετά το batch size. Το seed υποθέτω το ορίζουμε σε φάση debugging για να έχουμε consistent αποτελέσματα και να μην είναι all over the place. IMHO δεν είπε κάτι λάθος ο φίλος, αν και σαφώς σε φάση αξιολόγησης του μοντέλου (αργότερα) σαφώς και θα είναι τυχαίο (χωρίς σταθερό seed). Το mnist είναι το παράδειγμα που πήρα αρχικά και έγραψα το νευρωνικό. Εγώ θέλω να κάνω classification σε vectors 1X12 (κανονικοποιημένοι δείκτες χρηματιστηρίου) για να ξέρω σε ορίζοντα 15ημερου αν θα ανέβει ή θα κατέβει η μετοχή. Παραδόξως, εναντίων στην θεωρία ότι δεν μπορεί να γίνει πρόβλεψη για high frequency trading (σε οριζοντα ημερών), πετυχαίνω κάπου 60% ακρίβεια και ~230-250% απόσβεση του αρχικού ποσού. Θα το κοιτάξω αυτό με τα μεγέθη. Ευχαριστώ. Το είδα, και με το παράδειγμα που ανέφερες για το mnist (αν και δεν δουλέυω σε αυτό με βοήθησε να το καταλάβω). Συνεπώς παίρνει στο τελευταίο layer 12(batch_size) X2(one hot y_estimated). Εγώ το ελέγχω με το σκέτο 2Χ1 one hot y_test. Συνεπώς πρέπει να κρατήσω το τελευταίο 1Χ2 της εξόδου; Πως το μετατρέπω; Να κάνω batches και το y_test για να είναι 12Χ2 και αυτό;
Fortistis Δημοσ. 2 Σεπτεμβρίου 2018 Δημοσ. 2 Σεπτεμβρίου 2018 (επεξεργασμένο) 7 ώρες πριν, Sheogorath είπε Το seed υποθέτω το ορίζουμε σε φάση debugging για να έχουμε consistent αποτελέσματα και να μην είναι all over the place. IMHO δεν είπε κάτι λάθος ο φίλος, αν και σαφώς σε φάση αξιολόγησης του μοντέλου (αργότερα) σαφώς και θα είναι τυχαίο (χωρίς σταθερό seed). Το mnist είναι το παράδειγμα που πήρα αρχικά και έγραψα το νευρωνικό. Εγώ θέλω να κάνω classification σε vectors 1X12 (κανονικοποιημένοι δείκτες χρηματιστηρίου) για να ξέρω σε ορίζοντα 15ημερου αν θα ανέβει ή θα κατέβει η μετοχή. Παραδόξως, εναντίων στην θεωρία ότι δεν μπορεί να γίνει πρόβλεψη για high frequency trading (σε οριζοντα ημερών), πετυχαίνω κάπου 60% ακρίβεια και ~230-250% απόσβεση του αρχικού ποσού. Θα το κοιτάξω αυτό με τα μεγέθη. Ευχαριστώ. Το είδα, και με το παράδειγμα που ανέφερες για το mnist (αν και δεν δουλέυω σε αυτό με βοήθησε να το καταλάβω). Συνεπώς παίρνει στο τελευταίο layer 12(batch_size) X2(one hot y_estimated). Εγώ το ελέγχω με το σκέτο 2Χ1 one hot y_test. Συνεπώς πρέπει να κρατήσω το τελευταίο 1Χ2 της εξόδου; Πως το μετατρέπω; Να κάνω batches και το y_test για να είναι 12Χ2 και αυτό; α) Τι ακριβώς θα δεις με το debugging και θα σε βοηθήσει το fixed seed; Συγκεκριμένα. Πες μου "αυτό και αυτό". β) "Να κάνω batches και το y_test για να είναι 12Χ2 και αυτό;" Ναι. Για να ρωτάς το "Να κάνω batches και το y_test για να είναι 12Χ2 και αυτό;" σημαίνει ότι έχεις μεγάλη έλλειψη στην θεωρία και σε βασικά στοιχεία θεωρίας. Εάν θέλεις όντως να μάθεις, κάτσε διάβασε. Να φανταστώ ότι το 2 στο y_true (y_test όπως το λες) είναι για bid/ask; Υ.Γ. Για το technical correctness, δεν θα κάνεις "batches" αλλά "mini-batches". Επεξ/σία 2 Σεπτεμβρίου 2018 από Fortistis
Fortistis Δημοσ. 2 Σεπτεμβρίου 2018 Δημοσ. 2 Σεπτεμβρίου 2018 (επεξεργασμένο) @Sheogorath Έτσι για την ιστορία, η μόνη στοχαστική διαδικασία που χειρίζεσαι αυτή την στιγμή στον κώδικά σου είναι το shuffling των δεδομένων σου. Το fixed seed προτάθηκε να το χρησιμοποιήσεις για να λύσεις το συγκεκριμένο πρόβλημα. Προφανέστατα, και εσύ και ο άλλος που συμμερίζεστε αυτή την άποψη δεν γνωρίζετε τι άλλες στοχαστικές διαδικασίες συμβαίνουν στον κώδικα που παρέθεσες καθώς και τι κινδύνους έχει το να τις μετατρέψεις σε ντετερμινιστικές. Δεν εννοώ κινδύνους στο να μην τρέχει, αλλά στην όλη διαδικασία. Επίσης, προφανέστατα ο άλλος (τουλάχιστον, παίζει και εσύ) δεν γνωρίζει ( -ετε ) καθιερωμένες πρακτικές, όπως έχουν γίνει establish από την DL community. Για παράδειγμα, όταν παίζει σαν ατάκα το: 20 ώρες πριν, pmav99 είπε Κατά τη γνώμη μου όταν κάνεις develop κώδικα που χρησιμοποιεί random generators καλό είναι τουλάχιστον στην φάση του testing να έχεις repeatable αποτελέσματα. και αναφέρεται σε generator που ήδη έχει το "shuffling" argument (εντός ενός DL project), είτε κανείς δεν γνωρίζει τι είναι shuffling είτε δεν γνωρίζει τι σημαίνει το shuffling. Το ότι δεν γνωρίζει τι επήρεια έχει η αλλαγή από στοχαστικές διαδικασίες σε ντετερμινιστικές, προφανώς κάνει μπαμ. Οπότε, αυτό με αφήνει με δύο επιλογές. Είτε σας παρουσιάζω τι και πώς, μαθαίνετε και πλέον γνωρίζετε τι παίζει, είτε κάνω τουμπεκί και σας αφήνω στο συννεφάκι σας. Επειδή δεν έχετε καμία μα καμία διάθεση να μάθετε αλλά νομίζετε ότι ήδη γνωρίζετε, θα επιλέξω το δεύτερο. Μπορείτε να πείτε "δες τα ML project τι κάνουν" κτλ. Το θέμα είναι ότι εγώ δεν θα απαντήσω με ατάκες τύπου "ML projects στο github" αλλά με αναφορά σε papers (δημοσιευμένα, με ή χωρίς github repo). Τόσο γενικά ML/AI όσο και DL specific. Φυσικά και υπάρχει, από μέρος σας, η δικαιολογία "@@ρια ξέρεις, σάλτα και *". Λογική (και μερικώς αναμενόμενη) αντίδραση. Εγώ με ξέρω, εσείς σας ξέρετε. Θα έλεγα ότι θα ήταν ενδιαφέρον από μεριά σας να σκεφτείτε πώς θα χαρακτηρίζατε κάποιον (εμένα π.χ.) που νομίζετε ότι δεν έχει ιδέα και παρόλα αυτά μιλάει και δεν θέλει να μάθει. Μετά, δείτε τα γραπτά σας σε αυτό το thread και σκεφτείτε σε ποια κατηγορία ανήκετε και τι θα λέγατε για τον εαυτό σας, δεδομένης της εμπειρία που γνωρίζετε αλλά και φαίνεται ότι έχετε. Anyway, αρκετά έγραψα. Λογικά θα παίξει αντίδραση e-ego κτλ και θα αμαυρωθεί λίγο το thread σου. Προκαταβολικά συγνώμη. Καλή τύχη σε αυτό που κάνεις. Over and out. Φιλιά. Επεξ/σία 2 Σεπτεμβρίου 2018 από Fortistis
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα