有没有人有使用PySpark库(特别是使用pyLDAvis)训练的LDA模型的数据可视化示例?我已经看过很多GenSim和其他库的例子,但不是PySpark.具体来说,我想知道传递给pyLDAvis.prepare()函数的内容以及如何从我的lda模型中获取它.这是我的代码:
from pyspark.mllib.clustering import LDA, LDAModel
from pyspark.mllib.feature import IDF
from pyspark.ml.feature import CountVectorizer
from pyspark.mllib.linalg import Vectors
vectorizer = CountVectorizer(inputCol="filtered1", outputCol="features").fit(filtered_final)
countVectors = vectorizer.transform(filtered_final).select("status_id", "features")
countVectors.show()
frequencyVectors = countVectors.rdd.map(lambda vector: vector[1])
frequencyDenseVectors = frequencyVectors.map(lambda vector: Vectors.dense(vector))
idf = IDF().fit(frequencyDenseVectors)
print('fitting complete')
tfidf = idf.transform(frequencyDenseVectors)
print("tf idf complete")
#prepare corpus for LDA
corpus = tfidf.map(lambda x: [1, x]).cache()
#train LDA
ldaModel = LDA.train(corpus, k = 15, maxIterations=100, optimizer="online", docConcentration=2.0, topicConcentration=3.0)
print("lda model complete")
Run Code Online (Sandbox Code Playgroud) 我有一个训练有素的PyTorch模型,我现在想用ONNX导出到Caffe2.这部分看起来相当简单并且有很好的记录 但是,我现在想要将该模型"加载"到Java程序中,以便在我的程序中执行预测(Flink流应用程序).做这个的最好方式是什么?我无法在网站上找到任何描述如何执行此操作的文档.
我试着在 PyTorch 论坛上问这个问题,但没有得到任何回应,所以我希望这里有人可以帮助我。此外,如果有人有使用转换器模块的好例子,请分享它,因为文档仅显示使用简单的线性解码器。对于转换器,我知道我们通常输入实际的目标序列。因此,我的第一个问题是,在变换器之前,我有一个标准的线性层来变换我的时间序列序列和位置编码。根据文档,转换器模块代码 src 和 trg 序列需要具有相同的维度。
from torch.nn.modules.transformer import Transformer
class TransformerTimeSeries(torch.nn.Module):
def __init__(self, n_time_series, d_model=128):
super()._init__()
self.dense_shape = torch.nn.Linear(n_time_series, d_model)
self.pe = SimplePositionalEncoding(d_model)
self.transformer = Transformer(d_model, nhead=8)
Run Code Online (Sandbox Code Playgroud)
所以我想知道我可以简单地做这样的事情还是会以某种方式泄漏有关目标的信息?我实际上仍然不确定 loss.backward() 是如何工作的,所以我不确定这是否会导致问题。
def forward(self, x, t):
x = self.dense_shape(x)
x = self.pe(x)
t = self.dense_shape(t)
t = self.pe(t)
x = self.transformer(x, t)
Run Code Online (Sandbox Code Playgroud)
其次,目标序列是否需要任何类型的偏移量?因此,例如,如果我有时间序列[0,1,2,3,4,5,6,7]并且我想输入[0,1,2,3]以预测[4,5,6,7](tgt)?我会像那样简单地喂它还是更复杂?通常 BERT 和那些模型有 [CLS] 和 [SEP] 标记来表示句子的开头和结尾,但是,对于时间序列,我假设我不需要分隔符时间步长。