mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
LSTM layer for TensorFlow importer
This commit is contained in:
@@ -84,7 +84,9 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN
|
||||
/** Creates instance of LSTM layer */
|
||||
static Ptr<LSTMLayer> create(const LayerParams& params);
|
||||
|
||||
/** Set trained weights for LSTM layer.
|
||||
/** @deprecated Use LayerParams::blobs instead.
|
||||
@brief Set trained weights for LSTM layer.
|
||||
|
||||
LSTM behavior on each step is defined by current input, previous output, previous cell state and learned weights.
|
||||
|
||||
Let @f$x_t@f$ be current input, @f$h_t@f$ be current output, @f$c_t@f$ be current state.
|
||||
@@ -114,7 +116,7 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN
|
||||
@param Wx is matrix defining how current input is transformed to internal gates (i.e. according to abovemtioned notation is @f$ W_x @f$)
|
||||
@param b is bias vector (i.e. according to abovemtioned notation is @f$ b @f$)
|
||||
*/
|
||||
virtual void setWeights(const Mat &Wh, const Mat &Wx, const Mat &b) = 0;
|
||||
CV_DEPRECATED virtual void setWeights(const Mat &Wh, const Mat &Wx, const Mat &b) = 0;
|
||||
|
||||
/** @brief Specifies shape of output blob which will be [[`T`], `N`] + @p outTailShape.
|
||||
* @details If this parameter is empty or unset then @p outTailShape = [`Wh`.size(0)] will be used,
|
||||
@@ -122,7 +124,8 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN
|
||||
*/
|
||||
virtual void setOutShape(const MatShape &outTailShape = MatShape()) = 0;
|
||||
|
||||
/** @brief Specifies either interpet first dimension of input blob as timestamp dimenion either as sample.
|
||||
/** @deprecated Use flag `produce_cell_output` in LayerParams.
|
||||
* @brief Specifies either interpet first dimension of input blob as timestamp dimenion either as sample.
|
||||
*
|
||||
* If flag is set to true then shape of input blob will be interpeted as [`T`, `N`, `[data dims]`] where `T` specifies number of timpestamps, `N` is number of independent streams.
|
||||
* In this case each forward() call will iterate through `T` timestamps and update layer's state `T` times.
|
||||
@@ -130,12 +133,13 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN
|
||||
* If flag is set to false then shape of input blob will be interpeted as [`N`, `[data dims]`].
|
||||
* In this case each forward() call will make one iteration and produce one timestamp with shape [`N`, `[out dims]`].
|
||||
*/
|
||||
virtual void setUseTimstampsDim(bool use = true) = 0;
|
||||
CV_DEPRECATED virtual void setUseTimstampsDim(bool use = true) = 0;
|
||||
|
||||
/** @brief If this flag is set to true then layer will produce @f$ c_t @f$ as second output.
|
||||
/** @deprecated Use flag `use_timestamp_dim` in LayerParams.
|
||||
* @brief If this flag is set to true then layer will produce @f$ c_t @f$ as second output.
|
||||
* @details Shape of the second output is the same as first output.
|
||||
*/
|
||||
virtual void setProduceCellOutput(bool produce = false) = 0;
|
||||
CV_DEPRECATED virtual void setProduceCellOutput(bool produce = false) = 0;
|
||||
|
||||
/* In common case it use single input with @f$x_t@f$ values to compute output(s) @f$h_t@f$ (and @f$c_t@f$).
|
||||
* @param input should contain packed values @f$x_t@f$
|
||||
@@ -322,11 +326,41 @@ CV__DNN_EXPERIMENTAL_NS_BEGIN
|
||||
static Ptr<SplitLayer> create(const LayerParams ¶ms);
|
||||
};
|
||||
|
||||
/**
|
||||
* Slice layer has several modes:
|
||||
* 1. Caffe mode
|
||||
* @param[in] axis Axis of split operation
|
||||
* @param[in] slice_point Array of split points
|
||||
*
|
||||
* Number of output blobs equals to number of split points plus one. The
|
||||
* first blob is a slice on input from 0 to @p slice_point[0] - 1 by @p axis,
|
||||
* the second output blob is a slice of input from @p slice_point[0] to
|
||||
* @p slice_point[1] - 1 by @p axis and the last output blob is a slice of
|
||||
* input from @p slice_point[-1] up to the end of @p axis size.
|
||||
*
|
||||
* 2. TensorFlow mode
|
||||
* @param begin Vector of start indices
|
||||
* @param size Vector of sizes
|
||||
*
|
||||
* More convinient numpy-like slice. One and only output blob
|
||||
* is a slice `input[begin[0]:begin[0]+size[0], begin[1]:begin[1]+size[1], ...]`
|
||||
*
|
||||
* 3. Torch mode
|
||||
* @param axis Axis of split operation
|
||||
*
|
||||
* Split input blob on the equal parts by @p axis.
|
||||
*/
|
||||
class CV_EXPORTS SliceLayer : public Layer
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief Vector of slice ranges.
|
||||
*
|
||||
* The first dimension equals number of output blobs.
|
||||
* Inner vector has slice ranges for the first number of input dimensions.
|
||||
*/
|
||||
std::vector<std::vector<Range> > sliceRanges;
|
||||
int axis;
|
||||
std::vector<int> sliceIndices;
|
||||
|
||||
static Ptr<SliceLayer> create(const LayerParams ¶ms);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user