TensorFlow 1.4 と Estimator フレームワークを使用しています。
tf.contrib.estimator.multi_head
N の結果を要約する 1 つの頭部 (別の頭部を持つモデル) を作成するために使用したいと思いますsoftmax_cross_entropy_with_logits
。N 個の確率分布は、それぞれ同じクラス セットに対して定義されますが、独立した分布です。私が計算したい要約損失スコアは、単純にソフトマックス クロス エントロピー損失の二乗和です。
N 個のゼロのベクトルを偽造すれば、ほぼ atf.contrib.estimator.regression_head
を使用して要約を計算できます。labels
ベクトルがゼロの平均二乗誤差は、ソフトマックス損失の二乗を合計するのと同じだからです。しかし、これは不親切なようで、より直接的なアプローチが必要です。
_Head
で実装された独自のサブクラスを作成する必要があり、フレームワーク開発者が使用するように文書化されてtensorflow.python.estimator.canned.head
いるメソッドを実装する必要があるようです。create_loss
この道を歩み始める前に、検討すべき別のアプローチがあるかどうかを聞きたいと思います.
私はもともと Keras で開発を開始し、関数型 API を使用したマルチヘッド モデルを持っていました。おそらく、Keras の使用に戻りmodel_fn
、tf.keras.estimator.model_to_estimator
. すべてが同じであれば、私は純粋な Tensorflow イディオムでコーディングすることを好みますが、おそらく Keras が前進する最も簡単な方法です。