如何在tensorflow'中使用采样的_softmax_损失函数;带桶的s型号?

如何在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=

在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=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的带有桶的模型中使用采样的损失函数的正确方法是什么