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

Ευφυές Τεχνητό Νευρωνικό Δίκτυο


qtgeo

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

Παιδιά το όλο θέμα είναι το εξής : σε όλα τα σοβαρά project που (υποτίθεται? ) ότι κάνουν κάτι πρωτοποριακό, το ΠΡΩΤΟ πράγμα (όπως πολύ σωστά αναφέρει ο dop) είναι να τα συγκρίνεις με κάτι υπάρχον που είναι εδραιωμένο. Με το να βγαίνεις να λες ότι το πρόγραμμα μου "μαμεί και δέρνει" χωρίς τέτοιες απτές αποδείξεις, απλά προϊδεάζεις τον άλλο πολύ αρνητικά για το τι τελικά μπορεί να κάνει ο κώδικάς σου. Αλήθεια qtgeo, προσπάθησες να περάσεις κάποιο paper πάνω στο project σου σε κάποιο σοβαρό συνέδριο (όπως το Usenix) για να δούμε δλδ τι γνώμη έχουν και άλλοι κατέχοντες την γνώση;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 104
  • Δημ.
  • Τελ. απάντηση

egw lew palikari mou na to grapseis se php :-ppppppp

Re sy. Kane ayto pou 3ereis na kaneis kai tha vgeis kerdismenos.

egw apo thn allh isws na to ekana se prolog epidh einai pio expresive alla den asxoloumai.

einai na to goustareis. an loipon to goustareis kanto. ti kathesai kai akous

apo dw kai apo kei....

 

to paramythi tou aisopou me ton patera kai ton gio pou pane na poulhsoun ton gaidaro to 3ereis? ... e loipon???

Kalh synexeia kai kalofagoto. ;-)

Kai na thimasai:to apotelesma metraei.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πάντως αντικειμενικά ο dop έχει δίκιο στις παρατηρήσεις του, ο κώδικας του λογισμικού χρειάζεται σίγουρα ένα καλό «σουλούπωμα», για παράδειγμα στο gann.cpp (και αλλού) ο έλεγχος του μενού της εισόδου του χρήστη γίνεται με μια αλληλουχία από if(x){...}else{...} η οποία τον καθιστά μεγάλο σε μέγεθος και δυσανάγνωστο. Τα ίδια συμβαίνουν στο gsocket.cpp κ.α. ύστερα η έξοδος από τα functions, σε περίπτωση λάθους , απλά επιστρέφει στο σύστημα με exit! Σε άλλα σημεία υπάρχουν κλήσεις σε ρουτίνες C δίχως έλεγχο επιτυχίας / αποτυχίας ενώ καλούνται και εξωτερικά προγράμματα του Λ.Σ. καθιστώντας το port της εφαρμογής σε άλλα συστήματα προβληματικό.

 

Όπως σου είπα από την αρχή δεν γνωρίζω πολλά πράγματα από Νευρωνικά Δίκτυα οπότε δεν παίρνω θέση για το τι έχεις κάνει (παράλληλα υπολογίζω τις απόψεις των άλλων που γνωρίζουν) όμως ο κώδικας έστω και για έκδοση pre-release ακόμα και αν υλοποιεί το δισκοπότηρο των Νευρωνικών Δικτύων χρειάζεται οπωσδήποτε συμμάζεμα και εκτενέστατο bug-checking.

 

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

 

Συνεπώς προχώρα! και διέψευσε τις όποιες αμφιβολίες με τα αποτελέσματα της δουλεία σου..

 

Υ.Γ.

 

Όσον αφορά το αν γράφεις σε C ή C++ προσωπικά θεωρώ ότι γράφεις σε «απλοϊκής σύνταξης C (++)» ή αυτό που πολύ πετυχημένα χαρακτηρίζει η Microsoft ως Super-C (όρος αδόκιμος αλλά κατά περίπτωση πετυχημένος) δηλαδή από την "C++ κρατώ μόνο τα class, new, delete και στα υπόλοιπα ακολουθώ την C (scanf, printf κτλ.)" όμως σε τελική ανάλυση δεν έχει σημασία τι C γράφεις αρκεί αυτό που φτιάχνεις να δουλεύει ικανοποιητικά (τώρα βέβαια όταν το project είναι open source η μορφή του κώδικα μετράει;))...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λοιπόν απαντάω μία τελευταία φορά και απλά περιμένετε για πρόοδο του project...

 

Τα if ...else....κτλ. δέν είναι δίολου τυχαία επιλεγμένα αλλά τα χρησιμοποιώ έναντι των case διότι ο compiler τα κάνει και optimize!

 

Τα exit codes υπάρχουν και είναι μέσα στα στάνταρτς του POSIX μιάς και επυτυχία είναι το 0 και αποτυχία μια μή μηδενική τιμή, το 1.

Αυτό το κάνω με την GExit που εκτός από τα exit codes πετάω και τα μυνήματα εξόδου για τις αποτυχίες...

 

Το γνωρίζω ότι το port του προγράμματος καθίσταται δύσκολο με τέτοιες κλήσεις συστήματος αλλά δεν με ενδιαφέρει προσωρινά...

 

Το ότι γράφω C++ είναι γεγονός αλλά δεν καταλαβαίνεται ότι τις κλήσεις των scanf() και printf() τις χρειάζομαι γιατί είναι αρκετά πιό γρήγορες και μάλιστα εφόσον δέν προκαλούν κανένα πρόβλημα και κανένας δεν μου λέει ότι αυτό που κάνω είναι λάθος θα επιμείνω...

 

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

Ο καθένας απο εσάς έχει το δικαίωμα να το φτιάξει στα μέτρα του.

Μην κατακρίνεται όμως κάτι και το κάνετε τόσο γενικό, το δικό σας μοναδικό ειδικό!

Δέν υπάρχουν νόμοι και κανόνες ορθής γραφής, μόνο ιδέες....ΕΔΩ ΔΕΝ ΕΙΝΑΙ ΣΧΟΛΕΙΟ...

 

Ευχαριστώ!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάνεις λάθος.

Τη στιγμή που δημοσιεύεις τον κώδικα σου σε ένα από τα μεγαλύτερα τεχνολογικά forum της χώρας - αν όχι το μεγαλύτερο - φυσικά και είναι σχολείο για όλους αυτούς που διαβάζουν, μέλη κ επισκέπτες. Εκτός αν δεν είναι πραγματικά Open Source το project σου. Φυσικά και ο καθένας θα εκφέρει την άποψη του, φυσικά και θα κριθείς, είτε αυτό είναι θεμιτό είτε όχι, είτε θετικά είτε αρνητικά.

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

 

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

 

 

 

/sc

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι απλά δεν δέχομαι κανένα να με κρίνει για τελείως υποκειμενικά πράγματα...

Έλεος ούτε νηπιαγωγείο δεν θα το έλεγε αυτό με την στοίχηση του κώδικα!

Δηλαδή πόσο μάπας μπορεί να καταντήσει κάποιος για να φτάσει στο να πεί κάτι τέτοιο.

Αλλά έτσι είναι η Ελλάδα ο κάθενας απλά πρέπει να πεί κάτι επειδή έτσι έχει μάθει.

Δέν το βλυλώνει ποτέ όταν δεν γνωρίζει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το ότι γράφω C++ είναι γεγονός αλλά δεν καταλαβαίνεται ότι τις κλήσεις των scanf() και printf() τις χρειάζομαι γιατί είναι αρκετά πιό γρήγορες και μάλιστα εφόσον δέν προκαλούν κανένα πρόβλημα και κανένας δεν μου λέει ότι αυτό που κάνω είναι λάθος θα επιμείνω...

 

Εγώ έχω μια περίεργη συνήθεια, όταν βλέπω κέρσορα να αναβοσβήνει για είσοδο δεδομένων περιμένω κανένα μισάωρο να δω αν θα βρέξει και μετά του δίνω την είσοδο. Επίσης, έχω κάνει redirect το stdout σε ένα dot matrix εκτυπωτή δεκαπενταετίας. Λέτε να με νοιάζει αν γλυτώσω 1 ms με τις scanf()/printf();

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Sta είπες την μαγική λέξη...

ΕΣΥ...και μονο ΕΣΥ!

Δέν ενδιαφέρει τον υπόλοιπο λογικό κόσμο η τρέλα σου...

Αλλά όπως ανέφερα και πρίν "Έτσι είναι η Ελλάδα ο κάθενας απλά πρέπει να πεί κάτι επειδή έτσι έχει μάθει. Δέν το βουλώνει ποτέ όταν δεν γνωρίζει."

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δηλαδή όλοι οι υπόλοιποι (στην Ελλάδα) δίνουν είσοδο σε χρόνους της τάξης των ms, ώστε είναι κρίσιμης σημασίας εάν χρησιμοποιήθηκε η scanf() η cin ή οτιδήποτε άλλο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι φυσικά, αλλά φαντάσου τηην εισαγωγή τιμών σε ένα αυτοματοποιημένο περιβάλλον...που αυτό εξάλου πρόκειται να κάνω.

Δέν θα περνά μόνο ο χρήστης τιμές θα γίνεται και αυτόματα απο αρχείο ή απο πρόγραμμα σε πρόγραμμα...

 

Άσε δε την εκτύπωση στην οθόνη.

Βγάλε τις printf() και δές πόση παραπάνω ταχύτητα κερδίζεις...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ειλικρινά όμως δεν καταλαβαίνω σε τι αποσκοπούν ερωτήσεις αυτού του τύπου...

Δηλαδή τα τελείως αυτονόητα τα ρωτάτε για ποιό λόγο?

Γι αυτό νευριάζω...δεν σκέφτεστε και δεν ψάχνετε πρώτα πρίν μιλήσετε.

Μόνο για να πείτε κάτι...

 

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

Αυτό λέγεται κομπλεξ...δεν μπορώ όμως εγώ να ανέχομαι τα ψυχολογικά του καθενός...

Στο κάτω κάτω της γραφής ας το σκεφτόσασταν πρώτοι και ας το κάνατε.

Εάν δεν θέλετε να σας το παρουσιάσω απλά πείτε το και δεν με ενδιαφέρει να το γνωρίζεται.

Εγώ φταίω που πίστευα ότι έχουν μείνει άτομα σε αυτό τον τόπο που ακόμα σλέφτονται και δεν είναι ψώνια.

Σιγά το πράμα...Μεγαλώστε και λίγο...άντε!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πολύ σωστά! Οπότε, δεν αποτελεί επιχείρημα ότι χρησιμοποιείς τις printf()/scanf() επειδή είναι ταχύτερες από τις cin/cout. Δεν έχει ιδιαίτερο νόημα να μιλάμε για ταχύτητα συναρτήσεων εισόδου/εξόδου μιας και έχουμε αναπόφευκτη καθυστέρηση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νάτος πάλι...

Τώρα δεν είπαμε να σκεφτόμαστε τι λέμε χρησέ μου άνθρωπε...

 

Διάβασε καλά τι σου είπα.

Για το επόμενο βήμα στο project προοικονομό!

 

"Όχι φυσικά, αλλά φαντάσου τηην εισαγωγή τιμών σε ένα αυτοματοποιημένο περιβάλλον...που αυτό εξάλου πρόκειται να κάνω.

Δέν θα περνά μόνο ο χρήστης τιμές θα γίνεται και αυτόματα απο αρχείο ή απο πρόγραμμα σε πρόγραμμα...

"

 

 

Στο δημοτικό και στο γυμνάσιο νομίζω σου μάθανε να διαβάζεις όλο το κείμενο το κατανοείς και μετά απαντάς...

Χαμένα τα λόγια μου...

 

ΕΛΕΟΣ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ένα μικρό τεστάκι:

 

Ο κώδικας είναι:

>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OPTION1

int main(void) {
 char *o = "1";
 int i = atoi(o);

#ifdef OPTION1
 switch(i)
 {
 case 1:
   printf("aHere!\n");
   break;
 case 2:
   printf("Not here!\n");
   break;
 default:
   printf("Definately not here!\n");
 }
#else
 if (i==1)
 {
   printf("Here!\n");
 }
 else if (i==2)
 {
   printf("Not here!\n");
 }
 else
 {
   printf("Definately not here!\n");
 }
#endif

 return EXIT_SUCCESS;
}

 

Τα αποτελέσματα με gcc -O3 -S (δίνει την assembly) είναι:

 

>
.file	"switchif.c"
.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
.string	"1"
.LC1:
.string	"Here!"
.LC2:
.string	"Not here!"
.LC3:
.string	"Definately not here!"
.text
.p2align 4,,15
.globl main
.type	main, @function
main:
pushl	%ebp
movl	%esp, %ebp
pushl	%eax
pushl	%eax
andl	$-16, %esp
subl	$16, %esp
pushl	$0
pushl	$10
pushl	$0
pushl	$.LC0
call	__strtol_internal
addl	$16, %esp
cmpl	$1, %eax
je	.L9
cmpl	$2, %eax
je	.L10
subl	$12, %esp
pushl	$.LC3
call	puts
addl	$16, %esp
xorl	%eax, %eax
leave
ret
.p2align 4,,7
.L10:
subl	$12, %esp
pushl	$.LC2
call	puts
addl	$16, %esp
xorl	%eax, %eax
leave
ret
.p2align 4,,7
.L9:
subl	$12, %esp
pushl	$.LC1
call	puts
addl	$16, %esp
xorl	%eax, %eax
leave
ret
.size	main, .-main
.ident	"GCC: (GNU) 4.0.2 20050901 (prerelease) (SUSE Linux)"
.section	.note.GNU-stack,"",@progbits

 

και

 

>
.file	"switchif.c"
.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
.string	"1"
.LC1:
.string	"aHere!"
.LC2:
.string	"Not here!"
.LC3:
.string	"Definately not here!"
.text
.p2align 4,,15
.globl main
.type	main, @function
main:
pushl	%ebp
movl	%esp, %ebp
pushl	%eax
pushl	%eax
andl	$-16, %esp
subl	$16, %esp
pushl	$0
pushl	$10
pushl	$0
pushl	$.LC0
call	__strtol_internal
addl	$16, %esp
cmpl	$1, %eax
je	.L3
cmpl	$2, %eax
je	.L9
subl	$12, %esp
pushl	$.LC3
call	puts
addl	$16, %esp
xorl	%eax, %eax
leave
ret
.p2align 4,,7
.L3:
subl	$12, %esp
pushl	$.LC1
call	puts
addl	$16, %esp
xorl	%eax, %eax
leave
ret
.p2align 4,,7
.L9:
subl	$12, %esp
pushl	$.LC2
call	puts
addl	$16, %esp
xorl	%eax, %eax
leave
ret
.size	main, .-main
.ident	"GCC: (GNU) 4.0.2 20050901 (prerelease) (SUSE Linux)"
.section	.note.GNU-stack,"",@progbits

 

Διαφορά; Καμία (μόνον σε μια ετικέτα ΑΛΛΑ δεν επιβάλλει overhead στο κώδικα). Ποιο ανήκει στην switch και ποιο στην if (άσκηση για το σπίτι);

 

Από όσο βλέπεις qtgeo, κάποιοι εδώ μέσα δεν το παίζουν αυθεντίες, απλώς μιλάνε με στοιχεία. Καλά θα κάνεις να προσέχεις ΤΙ λες και προπαντώς ΠΩΣ το λες.

 

Το πόσο ευανάγνωστος και self-documenting είναι ο κώδικας στα FOSS projects είναι το Α και το Ω. Επιπλέον πέφτεις στο κλασικό αμάρτημα: premature optimization is the root of all evil (Knuth). Στο 99.99% των περιπτώσεων έχει μεγαλύτερο νόημα ο επεκτάσιμος και ο αναγνώσιμος κώδικας από τον ταχύτερο δυνατό - ειδάλλως όλα τα λειτουργικά θα ήταν ένα μονολιθικό αρχείο (που δεν συμβαίνει αυτό, τσέκαρε το Linux kernel source).

 

Πριν μιλήσουμε, βουτάμε τη γλώσσα λίγο στο μυαλό. Δεν συνομιλείς με bots, με ανθρώπους συνομιλείς που και νοημοσύνη έχουν και πιθανώς να μην δέχονται άκριτα το τι ισχυρίζεσαι και προπαντώς τις άδικες προσβολές σου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πρώτα απ' όλα αγαπητέ qtgeo, θα σε παρακαλούσα να μην κρίνεις τους συνομιλητές σου. Εκφράσεις όπως "Δηλαδή πόσο μάπας μπορεί να καταντήσει κάποιος για να φτάσει στο να πεί κάτι τέτοιο" δεν είναι ευγενικό να λέγονται από επιστήμονες... Θα σε παρακαλούσα λοιπόν από εδώ και πέρα να λείπουν υποτιμητικές εκφράσεις, καθώς το μόνο που κάνουν είναι να κατεβάζουν το επίπεδο της κατά τα άλλα όμορφης συζήτησής μας...

 

Πέραν αυτού, θα ήθελα να σου κάνω μια ερώτηση... Λες ότι προσφέρεις νέα μαθηματικά μοντέλα επίλυσης προβλημάτων που είναι πιο γρήγορα αν όχι τα βέλτιστα. Τα βρίσκουν πιο γρήγορα αλλά λιγότερες φορές ίσως; Ποιον αλγόριθμο έχεις βελτιώσει; Ως προς ποια στοιχεία; Χρησιμοποιείς first order ή second order ΝΝs; Θα με ενδιέφερε να μάθω καθώς ίσως η τεχνική σου να είναι πιο γρήγορη και με μεγαλύτερη επιτυχία από την τεχνική που χρησιμοποιώ... Εχεις εκδόσει κάποιο paper πάνω στον αλγόριθμο;

 

Ευχαριστώ!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.

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