Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

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)


 

Επεξ/σία από pmav99
  • Thanks 1
  • Απαντ. 45
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Δημοσ. (επεξεργασμένο)
5 λεπτά πριν, pmav99 είπε

tl;dr: Βάλε τον κώδικα που έχω στο προηγούμενο post...

Αν σε ενδιαφέρει να καταλάβεις το λάθος, η chunker επιστρέφει ένα generator. Για να πάρεις τις τιμές του generator θα πρέπει να τον κάνεις consume (να τον βάλεις δηλαδή σε ένα for, όπως έκανα στο προηγούμενο παράδειγμα). Εσύ περνάς απευθείας τον generator αντί για τις τιμές για αυτό και το TypeError. Διάβασε εδώ για περισσότερες πληροφορίες: https://realpython.com/introduction-to-python-generators/
 

Τον έβαλα τον κώδικα για δοκιμή, τα τύπωνε. 

Νομίζω κατάλαβα, τι έκανα λάθος. Συνεπώς θα πρέπει πριν τα "καλέσω", να τρέξω τον generator σε μια λούπα και να τα αποθηκεύσω;
Τώρα διαβάζω το λινκ.

Είδα το update/edit, νομίζω κατάλαβα τον τρόπο.

Επεξ/σία από Sheogorath
Δημοσ.
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)]]
 

Τα κοιτάω τώρα.

Δημοσ.
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

Δημοσ.
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. 

  • Thanks 1
Δημοσ. (επεξεργασμένο)
Αναφορά σε κείμενο

Υ.Γ. Το να θέσεις specific seed είναι ΛΑΘΟΣ στο συγκεκριμένο task που προσπαθείς να κάνεις και εν γένει σε αυτό το field που κοιτάς atm. Ακόμα και εάν θέλεις να δεις το αποτέλεσμα του generator. ΜΗΝ ακολουθήσεις τέτοια πρακτική.

Το να θέτεις specific seed είναι απολύτως σωστή τακτική εκεί που έχει νόημα να το κάνεις. Δηλαδή testing και debugging

Επεξ/σία από pmav99
  • Like 1
Δημοσ.

Αδερφέ, εάν πρόσεξες μίλησα για κάτι πολύ συγκεκριμένο. Εάν πιστεύεις ότι ξέρεις, τότε κάνε ό,τι καταλαβαίνεις. Εάν όχι, θαρρώ θα είναι προς συμφέρον σου να επωφεληθείς από άλλους που ξέρουν. 

Ό,τι πεις όμως. Έτσι είναι εάν έτσι πιστεύεις. 

Δημοσ. (επεξεργασμένο)

Αν έχεις όρεξη κάνε μια αναζήτηση σε οποιοδήποτε ML project για να δεις αν και πως χρησιμοποιούν seed και RandomState. Αλλά περί ορέξεως.

Επεξ/σία από pmav99
Δημοσ.
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 και αυτό;

Δημοσ. (επεξεργασμένο)
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". 

Επεξ/σία από Fortistis
Δημοσ. (επεξεργασμένο)

@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. Φιλιά. 

Επεξ/σία από Fortistis

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...