如何将tf.nn.sparse_softmax_cross_entropy_with_logits转换为使用采样的softmax而不是常规的softmax?
我有一个序列序列模型与一个大的目标词汇表(500 K字),它触发OOM错误。
softmax函数的输入类似于:[batch, max_time_steps, 512]
发布于 2018-10-07 22:12:09
我也有同样的问题,用以下方法解决:
labels = tf.reshape(labels, [-1, 1])
loss = tf.nn.sampled_softmax_loss(
weights=self.W_softmax,
biases=self.b_softmax,
labels=labels,
inputs=logits,
num_sampled=20,
num_true=1,
num_classes=20000,
partition_strategy="div")对我来说,关键是将num_sampled=20设置得相当低,512个太多了,无法容纳我的GPU内存(8GB)。
https://stackoverflow.com/questions/46640555
复制相似问题