-
Notifications
You must be signed in to change notification settings - Fork 5
/
nnsphconv.hpp
96 lines (77 loc) · 2.36 KB
/
nnsphconv.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// @author Huan LEI
// All rights reserved.
#ifndef __nnsphconv_hpp__
#define __nnsphconv_hpp__
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
#include <cublas_v2.h>
class SphericalConvolution {
public:
SphericalConvolution(unsigned int const *map,
unsigned int Fin,
unsigned int Fout,
unsigned int Nin,
unsigned int Nout,
unsigned int Nfilt);
void forward(float *output,
float const *input,
float const *filter,
float const *bias);
void backward(float *derInput,
float *derFilter,
float *derBias,
float const *input,
float const *filter,
float const *derOutput);
~SphericalConvolution();
unsigned int Fin, Fout, Nin, Nout, Nfilt;
unsigned int const *map; /* size = (4, inputSize), one column = {childID, filterID, parentID, convSize} */
bool SUCCESS = false; /* indicate whether the forward/backward computation is successful or not */
};
class SphericalDeconvolution {
public:
SphericalDeconvolution(unsigned int const *map,
unsigned int Fin,
unsigned int Fout,
unsigned int Nin,
unsigned int Nout,
unsigned int Nfilt);
void forward(float *output,
float const *input,
float const *filter,
float const *bias);
void backward(float *derInput,
float *derFilter,
float *derBias,
float const *input,
float const *filter,
float const *derOutput);
~SphericalDeconvolution();
unsigned int Fin, Fout, Nin, Nout, Nfilt;
unsigned int const *map; /* size = (4, inputSize), one column = {childID, filterID, parentID, convSize} */
bool SUCCESS = false; /* indicate whether the forward/backward computation is successful or not */
};
class FullyConnected {
public:
FullyConnected(unsigned int const *map,
unsigned int Fin,
unsigned int Fout,
unsigned int Nin,
unsigned int Nout,
unsigned int Nfilt);
void forward(float *output,
float const *input,
float const *filter,
float const *bias);
void backward(float *derInput,
float *derFilter,
float *derBias,
float const *input,
float const *filter,
float const *derOutput);
~FullyConnected();
unsigned int Fin, Fout, Nin, Nout, Nfilt;
unsigned int const *map; /* size = (4, N), one column = {id, 0, id, 1} */
bool SUCCESS = false; /* indicate whether the forward/backward computation is successful or not */
};
#endif /* defined(__nnsphconv_hpp__) */