【发布时间】:2020-09-25 20:12:49
【问题描述】:
我们在本地机器上开发了一个 Jupyter Notebook,用 Python (V3) 库 sklearn 和 gensim 训练模型。
当我们将random_state 变量设置为固定整数时,结果总是相同的。
在此之后,我们尝试将笔记本移动到 Azure 机器学习工作室(经典)中的工作区,但即使我们将 random_state 保持不变,结果也会有所不同。
按照以下链接的建议,我们安装了相同的库版本并检查了MKL 版本是否相同,并且MKL_CBWR 变量设置为AUTO。
t-SNE generates different results on different machines
Same Python code, same data, different results on different machines
不过,我们无法获得相同的结果。
我们还应该检查什么或为什么会发生这种情况?
更新
如果我们在本地机器生成一个pkl文件,然后在AML中导入,结果是一样的(就像pkl文件的本意一样)。
不过,我们希望在不导入 pkl 文件的情况下获得相同的结果(如果可能)。
库版本
gensim 3.8.3.
sklearn 0.19.2.
matplotlib 2.2.3.
numpy 1.17.2.
scipy 1.1.0.
代码
完整代码见here,里面有示例数据链接。
import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
from gensim.models import KeyedVectors
%matplotlib inline
import time
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
import seaborn as sns
wordvectors_file_vec = '../libraries/embeddings-new_large-general_3B_fasttext.vec'
wordvectors = KeyedVectors.load_word2vec_format(wordvectors_file_vec)
math_quests = # some transformations using wordvectors
df_subset = pd.DataFrame()
pca = PCA(n_components=3, random_state = 42)
pca_result = pca.fit_transform(mat_quests)
df_subset['pca-one'] = pca_result[:,0]
df_subset['pca-two'] = pca_result[:,1]
time_start = time.time()
tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300, random_state = 42)
tsne_results = tsne.fit_transform(mat_quests)
df_subset['tsne-2d-one'] = tsne_results[:,0]
df_subset['tsne-2d-two'] = tsne_results[:,1]
pca_50 = PCA(n_components=50, random_state = 42)
pca_result_50 = pca_50.fit_transform(mat_quests)
print('Cumulative explained variation for 50 principal components: {}'.format(np.sum(pca_50.explained_variance_ratio_)))
time_start = time.time()
tsne = TSNE(n_components=2, verbose=0, perplexity=40, n_iter=300, random_state = 42)
tsne_pca_results = tsne.fit_transform(pca_result_50)
print('t-SNE done! Time elapsed: {} seconds'.format(time.time()-time_start))
【问题讨论】:
-
你的意思是 Azure ML 服务吗?或 Azure ML Studio(经典?
-
Azure ML Studio(经典),将 Jupyter 与 Python 3 结合使用。
-
能否提供一些样本数据?或更改您的脚本以使用公共数据集?如果可以,我可以向您展示如何在使用远程计算目标进行训练时保证正确的环境。
-
当然。请在最新的问题版本中找到代码的链接。谢谢!
-
知道了!我正在处理这个案子
标签: python scikit-learn gensim azure-machine-learning-studio