[解決済み] TensorFlow SparseCategoricalCrossentropyはどのように機能するのですか?
2022-03-07 13:18:06
質問
TensorFlowのこの損失関数を理解しようとしているのですが、うまくいきません。それは スパースカテゴリカルクロステントロピー . 他の損失関数はすべて同じ形状の出力とラベルを必要としますが、この特定の損失関数はそうではありません。
ソースコードです。
import tensorflow as tf;
scce = tf.keras.losses.SparseCategoricalCrossentropy();
Loss = scce(
tf.constant([ 1, 1, 1, 2 ], tf.float32),
tf.constant([[1,2],[3,4],[5,6],[7,8]], tf.float32)
);
print("Loss:", Loss.numpy());
というエラーが発生します。
InvalidArgumentError: Received a label value of 2 which is outside the valid range of [0, 2).
Label values: 1 1 1 2 [Op:SparseSoftmaxCrossEntropyWithLogits]
損失関数SparseCategoricalCrossentropyに適切なパラメータを与えるには?
どのように解決するのですか?
SparseCategoricalCrossentropyとCategoricalCrossentropyはどちらもカテゴリー別クロスエントロピーを計算する。唯一の違いは、ターゲット/ラベルをどのようにエンコードするかである。
SparseCategoricalCrossentropyを使用する場合、ターゲットはカテゴリのインデックス(0から始まる)で表現されます。出力は4x2の形状をしており、これは2つのカテゴリがあることを意味する。 したがって、ターゲットは0または1のエントリを持つ4次元のベクトルでなければならない。例えば
scce = tf.keras.losses.SparseCategoricalCrossentropy();
Loss = scce(
tf.constant([ 0, 0, 0, 1 ], tf.float32),
tf.constant([[1,2],[3,4],[5,6],[7,8]], tf.float32))
これは、CategoricalCrossentropyとは対照的で、ラベルは一発符号化されている必要があります。
cce = tf.keras.losses.CategoricalCrossentropy();
Loss = cce(
tf.constant([ [1,0] [1,0], [1, 0], [0, 1] ], tf.float32),
tf.constant([[1,2],[3,4],[5,6],[7,8]], tf.float32))
SparseCategoricalCrossentropyは、カテゴリがたくさんある場合に効率的である。
関連
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】Tensorflow: ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory
-
[解決済み] 入力パイプラインは、keras.utils.Sequenceオブジェクトまたはtf.data.Datasetを使用しますか?
-
AttributeError: 'list' オブジェクトには 'value' という属性がありません。
-
TensorFlow入門学習(機械・アルゴリズムに選択を手伝ってもらう)
-
2021年最新。TensorFlow各GPUバージョン CUDAとcuDNN対応バージョン照合(最も簡潔なもの)。
-
モジュール 'tensorflow' は属性 'flags' を持っていない 解決策
-
エラーを解決してください。AttributeError: モジュール 'tensorflow' には 'logging' という属性がない。
-
[解決済み] Kerasのmodel.fit()とmodel.evaluate()の違いは何ですか?
-
[解決済み] tensorflowのtf.nn.max_poolのパディングの'SAME'と'VALID'の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Tensorflow: ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory
-
徹底的な解決。お使いのCPUは、このTensorFlowバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX2
-
[解決済み] TensorflowとKerasを使用して、学習精度よりも高い検証精度を実現。
-
TensorFlow cnn-cifar10 サンプルコード詳細
-
Tensorflow Error 1 AttributeError: __enter__
-
tensorflow ステップピットシェア。AttributeError: モジュール 'tensorflow' には属性 'xxx' がありません。
-
AttributeError: モジュール 'tensorflow' には 'placeholder' という属性がありません。
-
Bishopの問題2: tf-pose-estimation-master, last ModuleNotFoundError: tensorflow.contrib'という名前のモジュールがありません(解決済み)。
-
tensorflowの学習における問題点
-
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0"