PackedBidirectionalLayer Class — pytorch Architecture
Architecture documentation for the PackedBidirectionalLayer class in RNN.cpp from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/RNN.cpp lines 1048–1074
template <typename dir_hidden_type, typename cell_params>
struct PackedBidirectionalLayer
: Layer<PackedSequence, pair_of<dir_hidden_type>, pair_of<cell_params>> {
using hidden_type = pair_of<dir_hidden_type>;
using param_type = pair_of<cell_params>;
using output_type =
typename Layer<PackedSequence, hidden_type, param_type>::output_type;
PackedBidirectionalLayer(Cell<dir_hidden_type, cell_params>& cell)
: layer_(cell), rev_layer_(cell) {}
output_type operator()(
const PackedSequence& input,
const hidden_type& input_hidden,
const param_type& params) const override {
auto fw_result = layer_(input, input_hidden.first, params.first);
auto rev_result = rev_layer_(input, input_hidden.second, params.second);
PackedSequence output{
at::cat({fw_result.outputs.data, rev_result.outputs.data}, -1),
input.batch_sizes};
return {output,
std::make_pair(fw_result.final_hidden, rev_result.final_hidden)};
}
PackedLayer<dir_hidden_type, cell_params> layer_;
ReversedPackedLayer<dir_hidden_type, cell_params> rev_layer_;
};
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free