Skip to content

Commit

Permalink
softmax does cost now, special case 1x1 convs
Browse files Browse the repository at this point in the history
  • Loading branch information
pjreddie committed May 4, 2018
1 parent 508381b commit e7405b5
Show file tree
Hide file tree
Showing 21 changed files with 41 additions and 65 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ EXECOBJ = $(addprefix $(OBJDIR), $(EXECOBJA))
OBJS = $(addprefix $(OBJDIR), $(OBJ))
DEPS = $(wildcard src/*.h) Makefile include/darknet.h

#all: obj backup results $(SLIB) $(ALIB) $(EXEC)
all: obj results $(SLIB) $(ALIB) $(EXEC)
all: obj backup results $(SLIB) $(ALIB) $(EXEC)
#all: obj results $(SLIB) $(ALIB) $(EXEC)


$(EXEC): $(EXECOBJ) $(ALIB)
Expand Down
3 changes: 0 additions & 3 deletions cfg/alexnet.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,3 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/cifar.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,3 @@ activation=leaky

[softmax]
groups=1

[cost]

2 changes: 0 additions & 2 deletions cfg/cifar.test.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -115,5 +115,3 @@ activation=leaky
groups=1
temperature=3

[cost]

3 changes: 0 additions & 3 deletions cfg/darknet19.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,3 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/darknet19_448.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,3 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/densenet201.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -1949,6 +1949,3 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/extraction.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,3 @@ activation=leaky
[softmax]
groups=1

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/extraction22k.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,3 @@ activation=leaky
[softmax]
groups=1

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/go.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,3 @@ stride=1

[softmax]

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/go.test.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,4 @@ stride=1

[softmax]

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/gru.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,4 @@ activation=linear

[softmax]

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/resnet152.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -1458,6 +1458,3 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/resnet50.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,4 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/rnn.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,4 @@ activation=leaky

[softmax]

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/rnn.train.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,4 @@ activation=leaky

[softmax]

[cost]
type=sse

3 changes: 0 additions & 3 deletions cfg/strided.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,3 @@ activation=ramp

[softmax]

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/tiny.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,4 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

2 changes: 0 additions & 2 deletions cfg/vgg-16.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,4 @@ activation=linear
[softmax]
groups=1

[cost]
type=sse

26 changes: 17 additions & 9 deletions src/convolutional_kernels.cu
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,13 @@ void forward_convolutional_layer_gpu(convolutional_layer l, network net)
float *a = l.weights_gpu + j*l.nweights/l.groups;
float *b = net.workspace;
float *c = l.output_gpu + (i*l.groups + j)*n*m;
float *im = net.input_gpu + (i*l.groups + j)*l.c/l.groups*l.h*l.w;

im2col_gpu(net.input_gpu + (i*l.groups + j)*l.c/l.groups*l.h*l.w,
l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b);
if (l.size == 1){
b = im;
} else {
im2col_gpu(im, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b);
}
gemm_gpu(0,0,m,n,k,1,a,k,b,n,1,c,n);
}
}
Expand Down Expand Up @@ -236,22 +240,26 @@ void backward_convolutional_layer_gpu(convolutional_layer l, network net)
float *b = net.workspace;
float *c = l.weight_updates_gpu + j*l.nweights/l.groups;

float *im = net.input_gpu+(i*l.groups + j)*l.c/l.groups*l.h*l.w;
float *im = net.input_gpu+(i*l.groups + j)*l.c/l.groups*l.h*l.w;
float *imd = net.delta_gpu+(i*l.groups + j)*l.c/l.groups*l.h*l.w;

im2col_gpu(im, l.c/l.groups, l.h, l.w,
l.size, l.stride, l.pad, b);
im2col_gpu(im, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b);
gemm_gpu(0,1,m,n,k,1,a,k,b,k,1,c,n);

if(net.delta_gpu){
if(l.binary || l.xnor) swap_binary(&l);
if (net.delta_gpu) {
if (l.binary || l.xnor) swap_binary(&l);
a = l.weights_gpu + j*l.nweights/l.groups;
b = l.delta_gpu + (i*l.groups + j)*m*k;
c = net.workspace;
if (l.size == 1) {
c = imd;
}

gemm_gpu(1,0,n,k,m,1,a,n,b,k,0,c,k);

col2im_gpu(net.workspace, l.c/l.groups, l.h, l.w, l.size, l.stride,
l.pad, net.delta_gpu + (i*l.groups + j)*l.c/l.groups*l.h*l.w);
if (l.size != 1) {
col2im_gpu(net.workspace, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, imd);
}
if(l.binary || l.xnor) {
swap_binary(&l);
}
Expand Down
30 changes: 22 additions & 8 deletions src/convolutional_layer.c
Original file line number Diff line number Diff line change
Expand Up @@ -463,9 +463,13 @@ void forward_convolutional_layer(convolutional_layer l, network net)
float *a = l.weights + j*l.nweights/l.groups;
float *b = net.workspace;
float *c = l.output + (i*l.groups + j)*n*m;
float *im = net.input + (i*l.groups + j)*l.c/l.groups*l.h*l.w;

im2col_cpu(net.input + (i*l.groups + j)*l.c/l.groups*l.h*l.w,
l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b);
if (l.size == 1) {
b = im;
} else {
im2col_cpu(im, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b);
}
gemm(0,0,m,n,k,1,a,k,b,n,1,c,n);
}
}
Expand Down Expand Up @@ -501,21 +505,31 @@ void backward_convolutional_layer(convolutional_layer l, network net)
float *b = net.workspace;
float *c = l.weight_updates + j*l.nweights/l.groups;

float *im = net.input+(i*l.groups + j)*l.c/l.groups*l.h*l.w;
float *im = net.input + (i*l.groups + j)*l.c/l.groups*l.h*l.w;
float *imd = net.delta + (i*l.groups + j)*l.c/l.groups*l.h*l.w;

if(l.size == 1){
b = im;
} else {
im2col_cpu(im, l.c/l.groups, l.h, l.w,
l.size, l.stride, l.pad, b);
}

im2col_cpu(im, l.c/l.groups, l.h, l.w,
l.size, l.stride, l.pad, b);
gemm(0,1,m,n,k,1,a,k,b,k,1,c,n);

if(net.delta){
if (net.delta) {
a = l.weights + j*l.nweights/l.groups;
b = l.delta + (i*l.groups + j)*m*k;
c = net.workspace;
if (l.size == 1) {
c = imd;
}

gemm(1,0,n,k,m,1,a,n,b,k,0,c,k);

col2im_cpu(net.workspace, l.c/l.groups, l.h, l.w, l.size, l.stride,
l.pad, net.delta + (i*l.groups + j)*l.c/l.groups*l.h*l.w);
if (l.size != 1) {
col2im_cpu(net.workspace, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, imd);
}
}
}
}
Expand Down

0 comments on commit e7405b5

Please sign in to comment.