NISHIO Hirokazu[Translate]
学習済みモデルはどこで読むか
model_fn_builderの中のmodel_fnの中で
python
if init_checkpoint: (assignment_map, initialized_variable_names ) = modeling.get_assignment_map_from_checkpoint(tvars, init_checkpoint)
ってやってる
tvars = tf.trainable_variables()
init_vars = tf.train.list_variables(init_checkpoint)
init_varsの各要素のうちtvarsに含まれているものについてassignment_map に name→nameの対応づけを書き込んでいる
コメントに """Compute the union of the current variables and checkpoint variables.""" って書かれてるけどUnionじゃなくてIntersectじゃない?
なぜこれをやっているのか?
これによってPretrainedモデルでも、Fine-tunedモデルでも気にせずに読める

その後TPUのためにアダプタをかませたりする分岐はあるが基本的には
python
tf.train.init_from_checkpoint(init_checkpoint, assignment_map)

第1引数はファイル名など
assignment_map はどの変数をどの変数に対応づけるかを記述する

initialized_variable_namesはログ表示にしか使ってなさげ

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]