[解決済み] tf.contrib.seq2seq.sequence_loss のパラメータ。
2022-02-28 12:01:34
質問
RNNモデルでtf.contrib.seq2seq.sequence_loss関数を使って、損失を計算しようとしています。 APIドキュメントによると、この関数は少なくとも3つのパラメータを必要とします:ロジット、ターゲット、ウェイト
sequence_loss(
logits,
targets,
weights,
average_across_timesteps=True,
average_across_batch=True,
softmax_loss_function=None,
name=None
)
logits: A Tensor of shape [batch_size, sequence_length, num_decoder_symbols] and dtype float. The logits correspond to the prediction across all classes at each timestep.
targets: A Tensor of shape [batch_size, sequence_length] and dtype int. The target represents the true class at each timestep.
weights: A Tensor of shape [batch_size, sequence_length] and dtype float. weights constitutes the weighting of each prediction in the sequence. When using weights as masking, set all valid timesteps to 1 and all padded timesteps to 0, e.g. a mask returned by tf.sequence_mask.
average_across_timesteps: If set, sum the cost across the sequence dimension and divide the cost by the total label weight across timesteps.
average_across_batch: If set, sum the cost across the batch dimension and divide the returned cost by the batch size.
softmax_loss_function: Function (labels, logits) -> loss-batch to be used instead of the standard softmax (the default if this is None). Note that to avoid confusion, it is required for the function to accept named arguments.
name: Optional name for this operation, defaults to "sequence_loss".
私の理解では、logitsはXw+bを使った後の予測なので、その形状は[batch_size, sequence_length, output size]であるべきだと思います。そして、targetは私のラベルですが、その形状は[batch_size, sequence_length]であることが必要です。ラベルはロジットと同じ形であるべきなのだろう。
では、3次元のラベルを2次元に変換するにはどうすればよいのでしょうか?よろしくお願いします。
どのように解決するのですか?
ラベルは [batch_size, sequence_length] 形式の2次元行列、ロジットは [batch_size, sequence_length, output_size] 形式の3次元テンソルであるべきである。したがって、ラベル変数が既に [batch_size, sequence_length] の形状であれば、ラベルの次元を拡張する必要はない。
次元を拡張したい場合は、次のようにします。
expended_variable = tf.expand_dims(the_variable_you_wanna_expand, axis = -1)
関連
-
[解決済み】Tensorflowは、Path変数が設定された状態でインストールされているにもかかわらず、「cudart64_90.dll」を見つけることができません。
-
[解決済み】Tensorflow: ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory
-
徹底的な解決。お使いのCPUは、このTensorFlowバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX2
-
[解決済み] tf.nn.reluの "relu "とは何の略ですか?
-
tensorflowのCUDAドライババージョンがCUDAランタイムバージョンに対して不足している 問題が解決された
-
Tensorflow Error 1 AttributeError: __enter__
-
tensorflow(6) mnist.train.next_batch() 関数解析
-
AttributeError: 'NoneType' オブジェクトに属性がない...... エラー解析
-
tensorflowの学習における問題点
-
[解決済み] Kerasのmodel.fit()とmodel.evaluate()の違いは何ですか?
最新
-
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は、Path変数が設定された状態でインストールされているにもかかわらず、「cudart64_90.dll」を見つけることができません。
-
[解決済み】Cuda 9.0とcudnn 7.1と互換性のあるtensorflowのバージョンはありますか?
-
[解決済み] TensorflowとKerasを使用して、学習精度よりも高い検証精度を実現。
-
Tensorflowの実行エラー。tensorflow.contrib'という名前のモジュールがありません。
-
tf.convert_to_tensorを使用したときの値のエラーの解決方法
-
Tensorflow reports error Attempting to use uninitialized value ***/conv2d/kernel Solve
-
tensorflow-GPUのグラフィックカードのメモリ不足の問題
-
pip installs tensorflow with an error ERROR: OSErrorのため、パッケージをインストールできませんでした。[Errno 2] そのようなファイルやディレクトリはありません。
-
[解決済み] [Solved] ImportError: libcublas.so.10.0: 共有オブジェクトファイルを開くことができません。そのようなファイルやディレクトリはありません
-
[解決済み] Kerasでモデルウェイトを保存する:モデルウェイトとは?