mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
Fixed random values
This commit is contained in:
@ -27,6 +27,9 @@ darknet.exe partial cfg/yolov2.cfg yolov2.weights yolov2.conv.23 23
|
||||
darknet.exe partial cfg/yolov3.cfg yolov3.weights yolov3.conv.81 81
|
||||
|
||||
|
||||
darknet.exe partial cfg/yolov3-spp.cfg yolov3-spp.weights yolov3-spp.conv.85 85
|
||||
|
||||
|
||||
darknet.exe partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
|
||||
|
||||
|
||||
|
@ -41,7 +41,7 @@ detection_layer make_detection_layer(int batch, int inputs, int n, int side, int
|
||||
#endif
|
||||
|
||||
fprintf(stderr, "Detection Layer\n");
|
||||
srand(0);
|
||||
srand(time(0));
|
||||
|
||||
return l;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ void cudnn_maxpool_setup(layer *l)
|
||||
maxpool_status = cudnnSetPooling2dDescriptor(
|
||||
l->poolingDesc,
|
||||
CUDNN_POOLING_MAX,
|
||||
CUDNN_PROPAGATE_NAN, // CUDNN_PROPAGATE_NAN, CUDNN_NOT_PROPAGATE_NAN
|
||||
CUDNN_NOT_PROPAGATE_NAN, // CUDNN_PROPAGATE_NAN, CUDNN_NOT_PROPAGATE_NAN
|
||||
l->size,
|
||||
l->size,
|
||||
0, //l.pad,
|
||||
|
@ -348,7 +348,7 @@ float train_network_batch(network net, data d, int n)
|
||||
int batch = 2;
|
||||
for(i = 0; i < n; ++i){
|
||||
for(j = 0; j < batch; ++j){
|
||||
int index = rand()%d.X.rows;
|
||||
int index = random_gen()%d.X.rows;
|
||||
state.input = d.X.vals[index];
|
||||
state.truth = d.y.vals[index];
|
||||
forward_network(net, state);
|
||||
|
@ -181,7 +181,7 @@ void reconstruct_picture(network net, float *features, image recon, image update
|
||||
|
||||
void run_nightmare(int argc, char **argv)
|
||||
{
|
||||
srand(0);
|
||||
srand(time(0));
|
||||
if(argc < 4){
|
||||
fprintf(stderr, "usage: %s %s [cfg] [weights] [image] [layer] [options! (optional)]\n", argv[0], argv[1]);
|
||||
return;
|
||||
|
@ -46,7 +46,7 @@ region_layer make_region_layer(int batch, int w, int h, int n, int classes, int
|
||||
#endif
|
||||
|
||||
fprintf(stderr, "detection\n");
|
||||
srand(0);
|
||||
srand(time(0));
|
||||
|
||||
return l;
|
||||
}
|
||||
|
82
src/utils.c
82
src/utils.c
@ -60,7 +60,7 @@ void shuffle(void *arr, size_t n, size_t size)
|
||||
size_t i;
|
||||
void* swp = (void*)calloc(1, size);
|
||||
for(i = 0; i < n-1; ++i){
|
||||
size_t j = i + rand()/(RAND_MAX / (n-i)+1);
|
||||
size_t j = i + random_gen()/(RAND_MAX / (n-i)+1);
|
||||
memcpy(swp, (char*)arr+(j*size), size);
|
||||
memcpy((char*)arr+(j*size), (char*)arr+(i*size), size);
|
||||
memcpy((char*)arr+(i*size), swp, size);
|
||||
@ -699,7 +699,7 @@ int rand_int(int min, int max)
|
||||
min = max;
|
||||
max = s;
|
||||
}
|
||||
int r = (rand()%(max - min + 1)) + min;
|
||||
int r = (random_gen()%(max - min + 1)) + min;
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -717,10 +717,10 @@ float rand_normal()
|
||||
|
||||
haveSpare = 1;
|
||||
|
||||
rand1 = rand() / ((double) RAND_MAX);
|
||||
rand1 = random_gen() / ((double) RAND_MAX);
|
||||
if(rand1 < 1e-100) rand1 = 1e-100;
|
||||
rand1 = -2 * log(rand1);
|
||||
rand2 = (rand() / ((double)RAND_MAX)) * 2.0 * M_PI;
|
||||
rand2 = (random_gen() / ((double)RAND_MAX)) * 2.0 * M_PI;
|
||||
|
||||
return sqrt(rand1) * cos(rand2);
|
||||
}
|
||||
@ -731,21 +731,21 @@ float rand_normal()
|
||||
int n = 12;
|
||||
int i;
|
||||
float sum= 0;
|
||||
for(i = 0; i < n; ++i) sum += (float)rand()/RAND_MAX;
|
||||
for(i = 0; i < n; ++i) sum += (float)random_gen()/RAND_MAX;
|
||||
return sum-n/2.;
|
||||
}
|
||||
*/
|
||||
|
||||
size_t rand_size_t()
|
||||
{
|
||||
return ((size_t)(rand()&0xff) << 56) |
|
||||
((size_t)(rand()&0xff) << 48) |
|
||||
((size_t)(rand()&0xff) << 40) |
|
||||
((size_t)(rand()&0xff) << 32) |
|
||||
((size_t)(rand()&0xff) << 24) |
|
||||
((size_t)(rand()&0xff) << 16) |
|
||||
((size_t)(rand()&0xff) << 8) |
|
||||
((size_t)(rand()&0xff) << 0);
|
||||
return ((size_t)(random_gen()&0xff) << 56) |
|
||||
((size_t)(random_gen()&0xff) << 48) |
|
||||
((size_t)(random_gen()&0xff) << 40) |
|
||||
((size_t)(random_gen()&0xff) << 32) |
|
||||
((size_t)(random_gen()&0xff) << 24) |
|
||||
((size_t)(random_gen()&0xff) << 16) |
|
||||
((size_t)(random_gen()&0xff) << 8) |
|
||||
((size_t)(random_gen()&0xff) << 0);
|
||||
}
|
||||
|
||||
float rand_uniform(float min, float max)
|
||||
@ -755,7 +755,14 @@ float rand_uniform(float min, float max)
|
||||
min = max;
|
||||
max = swap;
|
||||
}
|
||||
return ((float)rand()/RAND_MAX * (max - min)) + min;
|
||||
|
||||
if (RAND_MAX < 65536) {
|
||||
int rnd = rand()*(RAND_MAX + 1) + rand();
|
||||
return ((float)rnd / (RAND_MAX*RAND_MAX) * (max - min)) + min;
|
||||
}
|
||||
else {
|
||||
return ((float)rand() / RAND_MAX * (max - min)) + min;
|
||||
}
|
||||
//return (random_float() * (max - min)) + min;
|
||||
}
|
||||
|
||||
@ -785,6 +792,9 @@ unsigned int random_gen()
|
||||
rand_s(&rnd);
|
||||
#else
|
||||
rnd = rand();
|
||||
if (RAND_MAX < 65536) {
|
||||
rnd = rand()*(RAND_MAX + 1) + rnd;
|
||||
}
|
||||
#endif
|
||||
return rnd;
|
||||
}
|
||||
@ -807,3 +817,47 @@ float rand_uniform_strong(float min, float max)
|
||||
}
|
||||
return (random_float() * (max - min)) + min;
|
||||
}
|
||||
|
||||
float rand_precalc_random(float min, float max, float random_part)
|
||||
{
|
||||
if (max < min) {
|
||||
float swap = min;
|
||||
min = max;
|
||||
max = swap;
|
||||
}
|
||||
return (random_part * (max - min)) + min;
|
||||
}
|
||||
|
||||
#define RS_SCALE (1.0 / (1.0 + RAND_MAX))
|
||||
|
||||
double double_rand(void)
|
||||
{
|
||||
double d;
|
||||
do {
|
||||
d = (((rand() * RS_SCALE) + rand()) * RS_SCALE + rand()) * RS_SCALE;
|
||||
} while (d >= 1); // Round off
|
||||
return d;
|
||||
}
|
||||
|
||||
unsigned int uint_rand(unsigned int less_than)
|
||||
{
|
||||
return (unsigned int)((less_than)* double_rand());
|
||||
}
|
||||
|
||||
int check_array_is_nan(float *arr, int size)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < size; ++i) {
|
||||
if (isnan(arr[i])) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int check_array_is_inf(float *arr, int size)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < size; ++i) {
|
||||
if (isinf(arr[i])) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -70,6 +70,11 @@ void print_statistics(float *a, int n);
|
||||
unsigned int random_gen();
|
||||
float random_float();
|
||||
float rand_uniform_strong(float min, float max);
|
||||
float rand_precalc_random(float min, float max, float random_part);
|
||||
double double_rand(void);
|
||||
unsigned int uint_rand(unsigned int less_than);
|
||||
int check_array_is_nan(float *arr, int size);
|
||||
int check_array_is_inf(float *arr, int size);
|
||||
int int_index(int *a, int val, int n);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -70,7 +70,7 @@ layer make_yolo_layer(int batch, int w, int h, int n, int total, int *mask, int
|
||||
#endif
|
||||
|
||||
fprintf(stderr, "yolo\n");
|
||||
srand(0);
|
||||
srand(time(0));
|
||||
|
||||
return l;
|
||||
}
|
||||
|
Reference in New Issue
Block a user