tf_nndct1.IterativePruningRunner
__init__(self,
model_name: str,
sess: SessionInterface,
input_specs: Mapping[str, tf.TensorSpec],
output_node_names: List[str],
excludes: List[str]=[])
引数:
- model_name
- モデル名。
- sess
- TensorFlow セッションのインスタンス、グラフおよび初期化された変数を含む。
- input_specs
- このマッピングのキーは、ベースライン モデルの入力ノード名です。
- output_node_names
- ターゲット出力ノード名。
- excludes
- プルーニングをスキップするノード名。
戻り値: Instance of IterativePruningRunner
ana(self,
eval_fn: Callable[[tf.compat.v1.GraphDef], float],
gpu_ids: List[str]=['/GPU:0'],
checkpoint_interval: int = 10) -> None:
引数
- eval_fn
- この関数は、プルーニング プロセスの中間結果を評価します。これは、float を返します。
- gpu_ids
- 評価を実行するデバイスを示す文字列のリストです。
- checkpoint_interval
- この手法でキャッシュ メカニズムを実装し、checkpoint_interval 評価ごとに結果を保存します。
戻り値: None
prune(self,
sparsity: float=None,
threshold: float=None,
max_attemp: int=10) -> Tuple[Mapping[str, TensorProto], Mapping[str, np.ndarray]]:
プルーニングには、FLOP ベースと精度ベースの 2 つのモードがあり、引数のスパース性としきい値に対応します。これら 2 つの引数を同時に None にすることは できません 。引数のスパース性はしきい値よりも優先されます。
引数:
- sparsity
- この値は、順方向パスでのモデルの浮動小数点演算量の減少率を示します。
- threshold
- 範囲は 0 ~ 1 内です。プルーニングされたグラフと元のグラフ間の相対的な精度差の最大許容値を示します。
- max_attemp
- プルーニング ランナーが最適なプルーニング手法を繰り返し見つけ、max_attemp ステップ後に戻します。
戻り値:
- shape_tensors
- 文字列から NodeDef へのマッピングです。キーは、graph_def 内の node_defs の名前であり、軽量グラフを得るためにはこれらのキーを変更する必要があります。値はターゲット node_def の内容をマスクします。
- masks
- 文字列からアレイへのマッピングで、変数に対応します。
get_slim_graph_def(self,
shape_tensors: Mapping[str, TensorProto]=None,
masks: Mapping[str, np.ndarray]=None) -> tf.compat.v1.GraphDef:
引数:
- shape_tensors
- prune メソッドから戻される文字列から NodeDef へのマッピングです。
- masks
- 文字列からアレイへのマッピングで、変数に対応します。このオブジェクトは、prune メソッドからも取得されます。
戻り値: 凍結された軽量の graph_def。