From 168af40fe9a3cc81c6ee16b3e81f154780c36bdb Mon Sep 17 00:00:00 2001
From: Scheaven <xuepengqiang>
Date: 星期四, 03 六月 2021 15:03:27 +0800
Subject: [PATCH] up new v4

---
 lib/detecter_tools/darknet/dropout_layer.c |  176 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 88 insertions(+), 88 deletions(-)

diff --git a/lib/detecter_tools/darknet/dropout_layer.c b/lib/detecter_tools/darknet/dropout_layer.c
index b941d31..3cc73ed 100644
--- a/lib/detecter_tools/darknet/dropout_layer.c
+++ b/lib/detecter_tools/darknet/dropout_layer.c
@@ -1,88 +1,88 @@
-#include "dropout_layer.h"
-#include "utils.h"
-#include "dark_cuda.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-dropout_layer make_dropout_layer(int batch, int inputs, float probability, int dropblock, float dropblock_size_rel, int dropblock_size_abs, int w, int h, int c)
-{
-    dropout_layer l = { (LAYER_TYPE)0 };
-    l.type = DROPOUT;
-    l.probability = probability;
-    l.dropblock = dropblock;
-    l.dropblock_size_rel = dropblock_size_rel;
-    l.dropblock_size_abs = dropblock_size_abs;
-    if (l.dropblock) {
-        l.out_w = l.w = w;
-        l.out_h = l.h = h;
-        l.out_c = l.c = c;
-
-        if (l.w <= 0 || l.h <= 0 || l.c <= 0) {
-            printf(" Error: DropBlock - there must be positive values for: l.w=%d, l.h=%d, l.c=%d \n", l.w, l.h, l.c);
-            exit(0);
-        }
-    }
-    l.inputs = inputs;
-    l.outputs = inputs;
-    l.batch = batch;
-    l.rand = (float*)xcalloc(inputs * batch, sizeof(float));
-    l.scale = 1./(1.0 - probability);
-    l.forward = forward_dropout_layer;
-    l.backward = backward_dropout_layer;
-#ifdef GPU
-    l.forward_gpu = forward_dropout_layer_gpu;
-    l.backward_gpu = backward_dropout_layer_gpu;
-    l.rand_gpu = cuda_make_array(l.rand, inputs*batch);
-    if (l.dropblock) {
-        l.drop_blocks_scale = cuda_make_array_pinned(l.rand, l.batch);
-        l.drop_blocks_scale_gpu = cuda_make_array(l.rand, l.batch);
-    }
-#endif
-    if (l.dropblock) {
-        if(l.dropblock_size_abs) fprintf(stderr, "dropblock    p = %.3f   l.dropblock_size_abs = %d    %4d  ->   %4d\n", probability, l.dropblock_size_abs, inputs, inputs);
-        else fprintf(stderr, "dropblock    p = %.3f   l.dropblock_size_rel = %.2f    %4d  ->   %4d\n", probability, l.dropblock_size_rel, inputs, inputs);
-    }
-    else fprintf(stderr, "dropout    p = %.3f        %4d  ->   %4d\n", probability, inputs, inputs);
-    return l;
-}
-
-void resize_dropout_layer(dropout_layer *l, int inputs)
-{
-    l->inputs = l->outputs = inputs;
-    l->rand = (float*)xrealloc(l->rand, l->inputs * l->batch * sizeof(float));
-#ifdef GPU
-    cuda_free(l->rand_gpu);
-    l->rand_gpu = cuda_make_array(l->rand, l->inputs*l->batch);
-
-    if (l->dropblock) {
-        cudaFreeHost(l->drop_blocks_scale);
-        l->drop_blocks_scale = cuda_make_array_pinned(l->rand, l->batch);
-
-        cuda_free(l->drop_blocks_scale_gpu);
-        l->drop_blocks_scale_gpu = cuda_make_array(l->rand, l->batch);
-    }
-#endif
-}
-
-void forward_dropout_layer(dropout_layer l, network_state state)
-{
-    int i;
-    if (!state.train) return;
-    for(i = 0; i < l.batch * l.inputs; ++i){
-        float r = rand_uniform(0, 1);
-        l.rand[i] = r;
-        if(r < l.probability) state.input[i] = 0;
-        else state.input[i] *= l.scale;
-    }
-}
-
-void backward_dropout_layer(dropout_layer l, network_state state)
-{
-    int i;
-    if(!state.delta) return;
-    for(i = 0; i < l.batch * l.inputs; ++i){
-        float r = l.rand[i];
-        if(r < l.probability) state.delta[i] = 0;
-        else state.delta[i] *= l.scale;
-    }
-}
+#include "dropout_layer.h"
+#include "utils.h"
+#include "dark_cuda.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+dropout_layer make_dropout_layer(int batch, int inputs, float probability, int dropblock, float dropblock_size_rel, int dropblock_size_abs, int w, int h, int c)
+{
+    dropout_layer l = { (LAYER_TYPE)0 };
+    l.type = DROPOUT;
+    l.probability = probability;
+    l.dropblock = dropblock;
+    l.dropblock_size_rel = dropblock_size_rel;
+    l.dropblock_size_abs = dropblock_size_abs;
+    if (l.dropblock) {
+        l.out_w = l.w = w;
+        l.out_h = l.h = h;
+        l.out_c = l.c = c;
+
+        if (l.w <= 0 || l.h <= 0 || l.c <= 0) {
+            printf(" Error: DropBlock - there must be positive values for: l.w=%d, l.h=%d, l.c=%d \n", l.w, l.h, l.c);
+            exit(0);
+        }
+    }
+    l.inputs = inputs;
+    l.outputs = inputs;
+    l.batch = batch;
+    l.rand = (float*)xcalloc(inputs * batch, sizeof(float));
+    l.scale = 1./(1.0 - probability);
+    l.forward = forward_dropout_layer;
+    l.backward = backward_dropout_layer;
+#ifdef GPU
+    l.forward_gpu = forward_dropout_layer_gpu;
+    l.backward_gpu = backward_dropout_layer_gpu;
+    l.rand_gpu = cuda_make_array(l.rand, inputs*batch);
+    if (l.dropblock) {
+        l.drop_blocks_scale = cuda_make_array_pinned(l.rand, l.batch);
+        l.drop_blocks_scale_gpu = cuda_make_array(l.rand, l.batch);
+    }
+#endif
+    if (l.dropblock) {
+        if(l.dropblock_size_abs) fprintf(stderr, "dropblock    p = %.3f   l.dropblock_size_abs = %d    %4d  ->   %4d\n", probability, l.dropblock_size_abs, inputs, inputs);
+        else fprintf(stderr, "dropblock    p = %.3f   l.dropblock_size_rel = %.2f    %4d  ->   %4d\n", probability, l.dropblock_size_rel, inputs, inputs);
+    }
+    else fprintf(stderr, "dropout    p = %.3f        %4d  ->   %4d\n", probability, inputs, inputs);
+    return l;
+}
+
+void resize_dropout_layer(dropout_layer *l, int inputs)
+{
+    l->inputs = l->outputs = inputs;
+    l->rand = (float*)xrealloc(l->rand, l->inputs * l->batch * sizeof(float));
+#ifdef GPU
+    cuda_free(l->rand_gpu);
+    l->rand_gpu = cuda_make_array(l->rand, l->inputs*l->batch);
+
+    if (l->dropblock) {
+        cudaFreeHost(l->drop_blocks_scale);
+        l->drop_blocks_scale = cuda_make_array_pinned(l->rand, l->batch);
+
+        cuda_free(l->drop_blocks_scale_gpu);
+        l->drop_blocks_scale_gpu = cuda_make_array(l->rand, l->batch);
+    }
+#endif
+}
+
+void forward_dropout_layer(dropout_layer l, network_state state)
+{
+    int i;
+    if (!state.train) return;
+    for(i = 0; i < l.batch * l.inputs; ++i){
+        float r = rand_uniform(0, 1);
+        l.rand[i] = r;
+        if(r < l.probability) state.input[i] = 0;
+        else state.input[i] *= l.scale;
+    }
+}
+
+void backward_dropout_layer(dropout_layer l, network_state state)
+{
+    int i;
+    if(!state.delta) return;
+    for(i = 0; i < l.batch * l.inputs; ++i){
+        float r = l.rand[i];
+        if(r < l.probability) state.delta[i] = 0;
+        else state.delta[i] *= l.scale;
+    }
+}

--
Gitblit v1.8.0