Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dlib
Commits
2f34414e
"git@developer.sourcefind.cn:OpenDAS/dlib.git" did not exist on "ab57847911f126bf02a8637ab12f094a3920165a"
Commit
2f34414e
authored
Dec 08, 2015
by
Davis King
Browse files
Added affine_ layer.
parent
8062663c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
81 additions
and
0 deletions
+81
-0
dlib/dnn/layers.h
dlib/dnn/layers.h
+81
-0
No files found.
dlib/dnn/layers.h
View file @
2f34414e
...
@@ -423,6 +423,87 @@ namespace dlib
...
@@ -423,6 +423,87 @@ namespace dlib
template
<
typename
SUBNET
>
template
<
typename
SUBNET
>
using
dropout
=
add_layer
<
dropout_
,
SUBNET
>
;
using
dropout
=
add_layer
<
dropout_
,
SUBNET
>
;
// ----------------------------------------------------------------------------------------
class
affine_
{
public:
affine_
(
)
{
}
template
<
typename
SUBNET
>
void
setup
(
const
SUBNET
&
sub
)
{
gamma
=
alias_tensor
(
1
,
sub
.
get_output
().
k
(),
sub
.
get_output
().
nr
(),
sub
.
get_output
().
nc
());
beta
=
gamma
;
params
.
set_size
(
gamma
.
size
()
+
beta
.
size
());
gamma
(
params
,
0
)
=
1
;
beta
(
params
,
gamma
.
size
())
=
0
;
}
void
forward_inplace
(
const
tensor
&
input
,
tensor
&
output
)
{
auto
g
=
gamma
(
params
,
0
);
auto
b
=
beta
(
params
,
gamma
.
size
());
tt
::
affine_transform
(
output
,
input
,
g
,
b
);
}
void
backward_inplace
(
const
tensor
&
computed_output
,
const
tensor
&
gradient_input
,
tensor
&
data_grad
,
tensor
&
params_grad
)
{
auto
g
=
gamma
(
params
,
0
);
auto
b
=
beta
(
params
,
gamma
.
size
());
auto
g_grad
=
gamma
(
params_grad
,
0
);
auto
b_grad
=
beta
(
params_grad
,
gamma
.
size
());
// We are computing the gradient of dot(gradient_input, computed_output*g + b)
tt
::
multiply
(
data_grad
,
gradient_input
,
g
);
tt
::
multiply
(
g_grad
,
gradient_input
,
computed_output
);
tt
::
add_bias_gradient
(
b_grad
,
gradient_input
);
}
const
tensor
&
get_layer_params
()
const
{
return
params
;
}
tensor
&
get_layer_params
()
{
return
params
;
}
friend
void
serialize
(
const
affine_
&
item
,
std
::
ostream
&
out
)
{
serialize
(
"affine_"
,
out
);
serialize
(
item
.
params
,
out
);
serialize
(
item
.
gamma
,
out
);
serialize
(
item
.
beta
,
out
);
}
friend
void
deserialize
(
affine_
&
item
,
std
::
istream
&
in
)
{
std
::
string
version
;
deserialize
(
version
,
in
);
if
(
version
!=
"affine_"
)
throw
serialization_error
(
"Unexpected version found while deserializing dlib::affine_."
);
deserialize
(
item
.
params
,
in
);
deserialize
(
item
.
gamma
,
in
);
deserialize
(
item
.
beta
,
in
);
}
private:
resizable_tensor
params
;
alias_tensor
gamma
,
beta
;
};
template
<
typename
SUBNET
>
using
affine
=
add_layer
<
affine_
,
SUBNET
>
;
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
class
relu_
class
relu_
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment