如何在tensorflow'中使用采样的_softmax_损失函数;带桶的s型号?
在tensorflow的model_with_buckets api函数中,有一个名为softmax_loss_function的参数,其签名为function(labels,logits)->loss batch如何在tensorflow'中使用采样的_softmax_损失函数;带桶的s型号?,tensorflow,Tensorflow,在tensorflow的model_with_buckets api函数中,有一个名为softmax_loss_function的参数,其签名为function(labels,logits)->loss batch def model_with_buckets( encoder_inputs, decoder_inputs, targets, weights, buckets, seq2seq, softmax_loss_function=
def model_with_buckets(
encoder_inputs,
decoder_inputs,
targets,
weights,
buckets,
seq2seq,
softmax_loss_function=None,
per_example_loss=False,
name=None
)
分配softmax_loss_函数的传统方法是使用类似softmax_cross_entropy_的任何东西和逻辑:
def softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None
)
而采样的_softmax_损耗函数具有以下定义:
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"):
在tensorflow seq2seq关于将英语翻译成法语的官方示例中,它将采样的_softmax_损耗分配给带有_bucket Parameter的模型_,wraper函数采样的_损耗如下:
w = tf.get_variable("proj_w", [size, self.target_vocab_size], dtype=tf.float32)
w_t = tf.transpose(w)
b = tf.get_variable("proj_b", [self.target_vocab_size], dtype=tf.float32)
output_projection = (w, b)
# maybe need Function (labels, logits)
def sampled_loss(labels, inputs):
labels = tf.reshape(labels, [-1, 1])
return tf.nn.sampled_softmax_loss(w_t, b, inputs, labels, num_samples, self.target_vocab_size)
softmax_loss_function = sampled_loss
它对我来说是挥舞着的。代码运行时有很多错误。因为输入不等于logits。在我的理解中,logits=输入*权重+偏差。那么,在tensorflow的带有桶的模型中使用采样的损失函数的正确方法是什么