1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! `nn` 公開面の入口(イシュー #1955)。
//!
//! facade 独自の [`crate::nn::Module`](#2395。生の `Tape` を出さず [`crate::TapeRef`] を取る
//! 薄い trait。非公開 `mod module` と `pub use` で公開する)と、
//! 子モジュール [`crate::nn::init`](`torch.nn.init.*` 相当の初期化関数群。#2504。
//! `fandhe_ai_autodiff::nn::init` からの純再エクスポート)と [`crate::nn::rnn`](`Rnn`/`Lstm`/`Gru` の
//! Sequence レベル API。`fandhe_ai_autodiff::nn` からの純再エクスポート)
//! に加え、facade 側コンテナ `ModuleList`/`Sequential`(#2396。同じく非公開
//! `mod container` と `pub use`)と、`ModuleDict`/`summary`(#2402。autodiff #2134 の鏡写し)を提供する。それ以外の `nn` 層(`Linear`・活性化関数・正規化・
//! Conv・pooling・Embedding・MultiheadAttention 等)は本モジュール
//! ではなく `compat::Sequential::add_*`(`crate::compat::sequential`)
//! 経由で到達する契約のまま変更しない([`crate::nn::rnn`] モジュール
//! doc「`Sequential::add_*` を設けない理由」参照)。
//! 例外として [`crate::nn::kv_cache`](#2579。`KvCache`・`StatefulAttention` の純再エクスポート)を
//! 持つ。MHA 本体は引き続き `Sequential::add_*` 経由のみ。
//! **#2602(損失構造体の承認形)**: [`crate::nn::loss`] は `fandhe_ai_autodiff::nn::loss` の損失構造体 14 種と
//! 引数型 10 種(`Reduction`・オプション型 9 種。うち 5 種は #2854)の純再エクスポート(`docs/facade-nn-loss-structs-exposure-decision.md` §4)。
//! **#2587(hooks の承認形)**: facade 版 [`crate::nn::ForwardHooked`](`nn::Module` 実装を包み
//! `forward` 直後に観察専用 hook を 1 回呼ぶラッパー。非公開 `mod forward_hook` と `pub use`)と、その
//! hook の引数型 [`crate::nn::ForwardHookCtx`](autodiff からの純再エクスポート)を提供する
//! (`docs/autodiff-forward-backward-hooks-design.md` §14.4・§18。`pub mod hooks` は設けない)。
//!
//! **例外(#2532・#2533。ルート #2499 の一括承認)**: `Transformer`・
//! `TransformerDecoderLayer`・`TransformerConfig` は型として再エクスポートする
//! (`docs/autodiff-transformer-decoder-decision.md` §承認事項の承認形)。構築と学習は
//! `compat::Sequential::add_transformer_decoder_layer`・`add_transformer` 経由で行う。
//! 単体構築(`Transformer::new`・`TransformerDecoderLayer::new`)には
//! `FeedForwardActivation` 等(facade 未公開)が必要で、facade だけでは行えない
//! (承認形の範囲外のため `FeedForwardActivation` や `Tape` への委譲メソッドは追加していない)。
pub use ;
// #2402: autodiff `ModuleDict`/`summary`(#2134)の鏡写し。上の行とは別の行で宣言する
// (`api_surface.rs` のトークン走査が両行の完全一致を別々に検査するため)。
pub use ;
pub use Module;
// #2587: forward hook の facade 版ラッパー(P5′)と ctx 型(autodiff からの純再エクスポート)。
// 各 1 文 1 行で宣言する(`api_surface.rs` が行単位で固定する)。
pub use ForwardHookCtx;
pub use ForwardHooked;
// #2532・#2533: Transformer/decoder 1 層の再エクスポート。上の行とは別の独立した 1 行で宣言する
// (`api_surface.rs::facade_reexports_transformer_decoder_items_only_in_approved_shape` が
// この 1 文の完全一致を要求する。#2533 で `Transformer` を加えた 3 名形)。
pub use ;
// `compat::Sequential::add_module`(#2398)が独自層を autodiff 側 `Module` へ包む crate 内専用の
// アダプタ。`pub(crate)` のため公開面には現れない。
pub use FacadeModuleAdapter;