学習済みモデルはどこで読むか
model_fn_builderの中のmodel_fnの中で
code: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のためにアダプタをかませたりする分岐はあるが基本的には code:python
tf.train.init_from_checkpoint(init_checkpoint, assignment_map)
第1引数はファイル名など
assignment_map はどの変数をどの変数に対応づけるかを記述する
initialized_variable_namesはログ表示にしか使ってなさげ