在tensorflow的model_with_buckets api函数中,有一个名为softmax_loss_function的参数,其签名是Function(标签,logits) - >损失批次。
site:twitter.com "https://example.com"
分配softmax_loss_function的传统方法是使用softmax_cross_entropy_with_logits之类的东西:
def model_with_buckets(
encoder_inputs,
decoder_inputs,
targets,
weights,
buckets,
seq2seq,
softmax_loss_function=None,
per_example_loss=False,
name=None
)
虽然sampled_softmax_loss函数具有以下定义:
def softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None
)
在关于将英语翻译成法国的官方tensorflow seq2seq示例中,它将samples_softmax_loss分配给model_with_bucket参数,并使用包装函数sampled_loss进行如下操作:
def sampled_softmax_loss(weights,
biases,
labels,
inputs,
num_sampled,
num_classes,
num_true=1,
sampled_values=None,
remove_accidental_hits=True,
partition_strategy="mod",
name="sampled_softmax_loss"):
这对我有用。代码运行时遇到很多错误。因为输入不等于logits。根据我的理解,logits =输入*权重+偏差。那么,在tensorflow的model_with_buckets中使用sampled_softmax_loss函数的正确方法是什么?