Commit 7f7ddcaa authored by Davis King's avatar Davis King

merged

parents 20536bec 27f04a37
...@@ -161,7 +161,7 @@ namespace dlib ...@@ -161,7 +161,7 @@ namespace dlib
} }
#ifdef DLIB_HAS_RVALUE_REFERENCES #ifdef DLIB_HAS_RVALUE_REFERENCES
array2d(array2d&& item) array2d(array2d&& item) : array2d()
{ {
swap(item); swap(item);
} }
......
...@@ -51,25 +51,25 @@ namespace dlib ...@@ -51,25 +51,25 @@ namespace dlib
template <typename T, size_t N> template <typename T, size_t N>
class sstack class sstack
{ {
public: public:
static_assert(N > 0, "You can't create an empty sstack."); static_assert(N > 0, "You can't create an empty sstack.");
typedef T value_type; typedef T value_type;
const static size_t num_elements = N; const static size_t num_elements = N;
sstack() {} sstack() {}
sstack(const T& item_) : item(item_), data(item_) {} sstack(const T& item_) : item(item_), data(item_) {}
const T& top() const { return item; } const T& top() const { return item; }
T& top() { return item; } T& top() { return item; }
size_t size() const { return N; } size_t size() const { return N; }
const sstack<T,N-1>& pop() const { return data; } const sstack<T,N-1>& pop() const { return data; }
sstack<T,N-1>& pop() { return data; } sstack<T,N-1>& pop() { return data; }
private: private:
T item; T item;
sstack<T,N-1> data; sstack<T,N-1> data;
}; };
template <typename T> template <typename T>
......
...@@ -52,72 +52,72 @@ namespace dlib ...@@ -52,72 +52,72 @@ namespace dlib
entirely allocated on the stack. entirely allocated on the stack.
!*/ !*/
public: public:
typedef T value_type; typedef T value_type;
const static size_t num_elements = N; const static size_t num_elements = N;
sstack( sstack(
); );
/*! /*!
ensures ensures
- #size() == N - #size() == N
- All elements of this stack are default constructed. - All elements of this stack are default constructed.
!*/ !*/
sstack( sstack(
const T& item const T& item
); );
/*! /*!
ensures ensures
- #size() == N - #size() == N
- Initializes all N elements in this stack with the given item. - Initializes all N elements in this stack with the given item. E.g.
E.g. top()==item, pop().top()==item, pop().pop().top()==item, etc. top()==item, pop().top()==item, pop().pop().top()==item, etc.
!*/ !*/
const T& top( const T& top(
) const; ) const;
/*! /*!
ensures ensures
- returns the top element of the stack. - returns the top element of the stack.
!*/ !*/
T& top( T& top(
); );
/*! /*!
ensures ensures
- returns the top element of the stack. - returns the top element of the stack.
!*/ !*/
size_t size( size_t size(
) const; ) const;
/*! /*!
ensures ensures
- returns the number of elements in this stack. In particular, the - returns the number of elements in this stack. In particular, the number
number returned is always N. returned is always N.
!*/ !*/
const sstack<T,N-1>& pop( const sstack<T,N-1>& pop(
) const; ) const;
/*! /*!
requires requires
- size() > 1 - size() > 1
ensures ensures
- returns a reference to the sub-stack S such that: - returns a reference to the sub-stack S such that:
- S.size() == size()-1. - S.size() == size()-1.
- S.top() is the next element in the stack. - S.top() is the next element in the stack.
!*/ !*/
sstack<T,N-1>& pop( sstack<T,N-1>& pop(
); );
/*! /*!
requires requires
- size() > 1 - size() > 1
ensures ensures
- returns a reference to the sub-stack S such that: - returns a reference to the sub-stack S such that:
- S.size() == size()-1. - S.size() == size()-1.
- S.top() is the next element in the stack. - S.top() is the next element in the stack.
!*/ !*/
}; };
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
......
...@@ -44,10 +44,10 @@ namespace dlib ...@@ -44,10 +44,10 @@ namespace dlib
ensures ensures
- Constructs this object from item. This form of constructor is optional - Constructs this object from item. This form of constructor is optional
but it allows you to provide a conversion from one input layer type to but it allows you to provide a conversion from one input layer type to
another. For example, the following code is valid only if my_input2 can another. For example, the following code is valid only if my_input_layer2 can
be constructed from my_input1: be constructed from my_input_layer1:
relu<fc<relu<fc<my_input1>>>> my_dnn1; relu<fc<relu<fc<my_input_layer1>>>> my_dnn1;
relu<fc<relu<fc<my_input2>>>> my_dnn2(my_dnn1); relu<fc<relu<fc<my_input_layer2>>>> my_dnn2(my_dnn1);
This kind of pattern is useful if you want to use one type of input layer This kind of pattern is useful if you want to use one type of input layer
during training but a different type of layer during testing since it during training but a different type of layer during testing since it
allows you to easily convert between related deep neural network types. allows you to easily convert between related deep neural network types.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment