View Single Post
Old 28-01-2018, 16:18   #3
skeleton
Member
 
L'Avatar di skeleton
 
Iscritto dal: Jul 2009
Messaggi: 81
Quote:
Originariamente inviato da pabloski Guarda i messaggi
Per prima cosa vorrei fare un pò l'impiccione e ti chiedo perchè non usi Tensorflow? E' fatta apposta per implementare reti neurali, è usabile in C++ e ovviamente supporta classi per generare numeri casuali in tutti i modi possibili https://www.tensorflow.org/api_guides/cc/guide

Detto questo, se usi C++1

Codice:
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<double>  distr(0.0, 10.0);

distr(gen) per estrarre il numero casuale
Sul mio computer genera numeri diversi e uniformemente distribuiti. Con float al posto del double però, la distribuzione peggiora vistosamente ( anche se non ho visto una situazione disastrosa come quella dell'output 2 ).


Senza C++1, la più ovvia soluzione è rivolgersi a Boost http://www.boost.org/doc/libs/1_55_0...st_random.html

Non uso TensorFlow perché voglio costruire una semplice rete neurale interamente con le mie mani. A mio modo di vedere è così che si capisce la reale complessità di quest'argomento. Detto ciò, quanto da te postato è esattamente la mia FUNZIONE 2, la peggiore in termini di risultati.

Ho provato a scrivere un veloce programmino per vedere se il problema derivasse dal resto del codice non postato e non dalla funzione da te riportata. Risposa negativa. Posto la prova e relativo risultato.

Codice:
#include <iostream>
#include <random>
using namespace std;

double runif(){
	std::random_device rd;
	std::mt19937 gen(rd());
	std::uniform_real_distribution<double>  distr(0.0, 10.0);
    return distr(gen);
}

int main(){
	for(int i=0; i<10; i++){
		cout<<endl<<runif();
	}
}
OUTPUT
Codice HTML:
7.26249
7.26249
7.26249
7.26249
7.26249
7.26249
7.26249
7.26249
7.26249
7.26249
Il programma restituisce lo stesso risultato sia ad ogni cout che ad ogni suo avvio. La sua risposta è sempre "7.26249".
skeleton è offline   Rispondi citando il messaggio o parte di esso