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)