28#include "tiny_dnn/util/util.h"
37template<
typename Activation>
40 CNN_USE_LAYER_MEMBERS;
50 :
Base({vector_type::data}),
51 dim_(
dim), scale_(scale), bias_(bias) {}
53 std::vector<shape3d>
in_shape()
const override {
61 std::string
layer_type()
const override {
return "linear"; }
64 std::vector<tensor_t*>&
out_data)
override {
65 const tensor_t& in = *
in_data[0];
70 CNN_UNREFERENCED_PARAMETER(out);
81 const std::vector<tensor_t*>&
out_data,
83 std::vector<tensor_t*>&
in_grad)
override {
87 CNN_UNREFERENCED_PARAMETER(
in_data);
99 template <
class Archive>
100 static void load_and_construct(
Archive &
ar, cereal::construct<linear_layer> & construct) {
104 ar(cereal::make_nvp(
"in_size",
dim), cereal::make_nvp(
"scale", scale), cereal::make_nvp(
"bias", bias));
106 construct(
dim, scale, bias);
109 template <
class Archive>
110 void serialize(Archive & ar) {
111 layer::serialize_prolog(ar);
112 ar(cereal::make_nvp(
"in_size", dim_), cereal::make_nvp(
"scale", scale_), cereal::make_nvp(
"bias", bias_));
117 float_t scale_, bias_;
single-input, single-output network with activation function
Definition feedforward_layer.h:37
Simple image utility class.
Definition image.h:94
bool parallelize_
Flag indicating whether the layer/node operations ara paralellized.
Definition layer.h:696
element-wise operation: f(x) = h(scale*x+bias)
Definition linear_layer.h:38
std::vector< shape3d > out_shape() const override
array of output shapes (width x height x depth)
Definition linear_layer.h:57
linear_layer(serial_size_t dim, float_t scale=float_t(1), float_t bias=float_t(0))
Definition linear_layer.h:49
std::string layer_type() const override
name of layer, should be unique for each concrete class
Definition linear_layer.h:61
std::vector< shape3d > in_shape() const override
array of input shapes (width x height x depth)
Definition linear_layer.h:53
void back_propagation(const std::vector< tensor_t * > &in_data, const std::vector< tensor_t * > &out_data, std::vector< tensor_t * > &out_grad, std::vector< tensor_t * > &in_grad) override
return delta of previous layer (delta=\frac{dE}{da}, a=wx in fully-connected layer)
Definition linear_layer.h:80
void forward_propagation(const std::vector< tensor_t * > &in_data, std::vector< tensor_t * > &out_data) override
Definition linear_layer.h:63