如何在 Tensorflow 中创建多维 softmax 输出?

数据挖掘 机器学习 Python 深度学习 张量流 嵌入
2022-02-23 06:03:35

我看到了 YouTube 发布的这篇研究论文,关于他们如何使用深度学习神经网络进行推荐。它位于此处:https ://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf

在论文中,候选生成神经网络模型输出了一个 256 维的 softmax,它充当了 1M 视频类中每一个的“输出嵌入”。

例如,这怎么可能在 tensorflow 中实现?softmax 不应该只是一维的吗?如果模型像他们所说的那样输出这样的“嵌入”,那么训练数据的标签将如何格式化为 256 维?换句话说,他们如何计算训练数据集中每个视频的 256 维向量?

非常感谢你们的时间和帮助,伙计们!

1个回答

您将“维度”与“张量顺序”混淆了。具有 256 个不同类别的 softmax 是 256 维向量,但也是 1 阶张量(而矩阵是 2 阶张量)。该论文正确使用了技术术语,因此 256 维向量只是具有 256 个标量条目的法向量。

因此,TensorFlow 中的 256 维 softmax 通常是一个输出层,如下所示:

y = tf.nn.softmax(tf.matmul(h, W) + b)

其中h是最后一个隐藏层,W是权重矩阵 nx 256,b是偏置 1 x 256 向量。

在论文中,候选生成神经网络模型输出了一个 256 维的 softmax,它充当了 1M 视频类中每一个的“输出嵌入”

这是对将 1M 不同输入压缩为 256 维输出以用作推荐匹配的嵌入的训练过程的描述。softmax 在输出端,据我所知,这只是在许多其他分类器网络中看到的普通 softmax 分类器输出(除了结果在技术上不用于分类任何东西)。我不清楚使用了什么监督数据或输入表示是什么。但是,我认为 1M “类”不太可能出现为例如 1-hot 编码,因为这不会有效地扩展到其他数百万个视频 - 嵌入的重点是转换不同的特征视频转换为用作相似性度量的东西,可以在存储在 YouTube 中的任何视频上运行。