gpt4 book ai didi

python - tensorflow 中的 SVD

转载 作者:行者123 更新时间:2023-11-30 09:09:20 25 4
gpt4 key购买 nike

我想使用 Tensorflow 中的 SVD(奇异值分解)从 text8 语料库创建向量表示。我使用了以下代码,但它没有获取维度数:

u,s,v = tf.svd(coocurrence_matrix)

我需要类似 TruncatedSVD in scikit-learn 的东西。我应该怎么办?是否可以在 Tensorflow 中做同样的事情?

最佳答案

我认为你正在做 cs20si 的第一个作业。形成任意维度的共现矩阵,例如 (1000,1000)。一旦有了单词(列表)和将单词映射到索引的字典,您就可以使用 ndarray 形成并发矩阵,例如

cooccurrence_matrix = np.zeros((VOCAB_SIZE, VOCAB_SIZE))
n_words = len(words)
for i, current_word in enumerate(words):
if current_word not in dictionary:
current_word = 'UNK'
if i != 0:
left_word = words[i-1]
if left_word not in dictionary:
left_word = 'UNK'
cooccurrence_matrix[dictionary[current_word]][dictionary[left_word]] += 1
if i < n_words-1:
right_word = words[i+1]
if right_word not in dictionary:
right_word = 'UNK'
cooccurrence_matrix[dictionary[current_word]][dictionary[right_word]] += 1

print cooccurrence_matrix.shape

之后您可以直接使用 tf.svd,因为它只需要一个张量。

tf_svd = tf.svd(matrix, compute_uv=True)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
svd, u, v = sess.run(tf_svd, feed_dict={matrix:cooccurrence_matrix})

tf.svd 的输出将具有 tf.svd 中提到的三个值。文档。我将从字典大小 100 开始,看看一切是否正常。

关于python - tensorflow 中的 SVD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44224914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com