如何可视化或绘制多维张量?
How do I visualize or plot a multidimensional tensor?
我想知道这里是否有人曾尝试在 numpy 中可视化多维张量。如果是这样,您能否与我分享我将如何着手做这件事?我正在考虑将其简化为 2D 可视化。
我包含了一些示例输出。它的结构很奇怪,有省略号“...”,它有一个 4D 张量布局 [[[[ 这里有内容]]]]
示例数据:
[[[[ -9.37186633e-05 -9.89684777e-05 -8.97786958e-05 ...,
-1.08984910e-04 -1.07056971e-04 -8.68257193e-05]
[[ -9.61350961e-05 -8.75062251e-05 -9.39425736e-05 ...,
-1.17737654e-04 -9.66376538e-05 -8.78447026e-05]
[ -1.06558400e-04 -9.04031331e-05 -1.04479543e-04 ...,
-1.02786013e-04 -1.07974607e-04 -1.07524407e-04]]
[[[ -1.09648725e-04 -1.01073667e-04 -9.39013553e-05 ...,
-8.94383265e-05 -9.06078858e-05 -9.83356076e-05]
[ -9.76310257e-05 -1.04029998e-04 -1.01905476e-04 ...,
-9.50643880e-05 -8.29156561e-05 -9.75912480e-05]]]
[ -1.12038200e-04 -1.00154917e-04 -9.00980813e-05 ...,
-1.10244124e-04 -1.16597665e-04 -1.10604939e-04]]]]
为了绘制高维数据,有一种技术叫做 T-SNE
T-SNE 由 tensorflow 作为 tesnorboard 功能提供
您可以只提供张量作为嵌入和 运行 tensorboard
您可以在 3D 或 2d 中可视化高维数据
这里是 link 使用 Tensor-board 的数据可视化:https://github.com/jayshah19949596/Tensorboard-Visualization-Freezing-Graph
你的代码应该是这样的:
tensor_x = tf.Variable(mnist.test.images, name='images')
config = projector.ProjectorConfig()
# One can add multiple embeddings.
embedding = config.embeddings.add()
embedding.tensor_name = tensor_x.name
# Link this tensor to its metadata file (e.g. labels).
embedding.metadata_path = metadata
# Saves a config file that TensorBoard will read during startup.
projector.visualize_embeddings(tf.summary.FileWriter(logs_path), config)
Tensorboard 可视化:
你可以使用scikit learn的TSNE绘制高维数据
下面是使用 scikit learn 的 TSNE 的示例代码
# x is my data which is a nd-array
# You have to convert your tensor to nd-array before using scikit-learn's tsne
# Convert your tensor to x =====> x = tf.Session().run(tensor_x)
standard = StandardScaler()
x_std = standard.fit_transform(x)
plt.figure()
label_encoder = LabelEncoder()
y = label_encoder.fit_transform(y)
tsne = TSNE(n_components=2, random_state=0) # n_components means you mean to plot your dimensional data to 2D
x_test_2d = tsne.fit_transform(x_std)
print()
markers = ('s', 'd', 'o', '^', 'v', '8', 's', 'p', "_", '2')
color_map = {0: 'red', 1: 'blue', 2: 'lightgreen', 3: 'purple', 4: 'cyan', 5: 'black', 6: 'yellow', 7: 'magenta',
8: 'plum', 9: 'yellowgreen'}
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=x_test_2d[y == cl, 0], y=x_test_2d[y == cl, 1], c=color_map[idx], marker=markers[idx],
label=cl)
plt.xlabel('X in t-SNE')
plt.ylabel('Y in t-SNE')
plt.legend(loc='upper left')
plt.title('t-SNE visualization of test data')
plt.show()
ScikitLearn 的 TSNE 结果:
您还可以使用PCA将高维数据绘制成二维
这里是 PCA.
的实现
Scikit 学习 PCA:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
我想知道这里是否有人曾尝试在 numpy 中可视化多维张量。如果是这样,您能否与我分享我将如何着手做这件事?我正在考虑将其简化为 2D 可视化。
我包含了一些示例输出。它的结构很奇怪,有省略号“...”,它有一个 4D 张量布局 [[[[ 这里有内容]]]]
示例数据:
[[[[ -9.37186633e-05 -9.89684777e-05 -8.97786958e-05 ...,
-1.08984910e-04 -1.07056971e-04 -8.68257193e-05]
[[ -9.61350961e-05 -8.75062251e-05 -9.39425736e-05 ...,
-1.17737654e-04 -9.66376538e-05 -8.78447026e-05]
[ -1.06558400e-04 -9.04031331e-05 -1.04479543e-04 ...,
-1.02786013e-04 -1.07974607e-04 -1.07524407e-04]]
[[[ -1.09648725e-04 -1.01073667e-04 -9.39013553e-05 ...,
-8.94383265e-05 -9.06078858e-05 -9.83356076e-05]
[ -9.76310257e-05 -1.04029998e-04 -1.01905476e-04 ...,
-9.50643880e-05 -8.29156561e-05 -9.75912480e-05]]]
[ -1.12038200e-04 -1.00154917e-04 -9.00980813e-05 ...,
-1.10244124e-04 -1.16597665e-04 -1.10604939e-04]]]]
为了绘制高维数据,有一种技术叫做 T-SNE
T-SNE 由 tensorflow 作为 tesnorboard 功能提供
您可以只提供张量作为嵌入和 运行 tensorboard
您可以在 3D 或 2d 中可视化高维数据
这里是 link 使用 Tensor-board 的数据可视化:https://github.com/jayshah19949596/Tensorboard-Visualization-Freezing-Graph
你的代码应该是这样的:
tensor_x = tf.Variable(mnist.test.images, name='images') config = projector.ProjectorConfig() # One can add multiple embeddings. embedding = config.embeddings.add() embedding.tensor_name = tensor_x.name # Link this tensor to its metadata file (e.g. labels). embedding.metadata_path = metadata # Saves a config file that TensorBoard will read during startup. projector.visualize_embeddings(tf.summary.FileWriter(logs_path), config)
Tensorboard 可视化:
你可以使用scikit learn的TSNE绘制高维数据
下面是使用 scikit learn 的 TSNE 的示例代码
# x is my data which is a nd-array # You have to convert your tensor to nd-array before using scikit-learn's tsne # Convert your tensor to x =====> x = tf.Session().run(tensor_x) standard = StandardScaler() x_std = standard.fit_transform(x) plt.figure() label_encoder = LabelEncoder() y = label_encoder.fit_transform(y) tsne = TSNE(n_components=2, random_state=0) # n_components means you mean to plot your dimensional data to 2D x_test_2d = tsne.fit_transform(x_std) print() markers = ('s', 'd', 'o', '^', 'v', '8', 's', 'p', "_", '2') color_map = {0: 'red', 1: 'blue', 2: 'lightgreen', 3: 'purple', 4: 'cyan', 5: 'black', 6: 'yellow', 7: 'magenta', 8: 'plum', 9: 'yellowgreen'} for idx, cl in enumerate(np.unique(y)): plt.scatter(x=x_test_2d[y == cl, 0], y=x_test_2d[y == cl, 1], c=color_map[idx], marker=markers[idx], label=cl) plt.xlabel('X in t-SNE') plt.ylabel('Y in t-SNE') plt.legend(loc='upper left') plt.title('t-SNE visualization of test data') plt.show()
ScikitLearn 的 TSNE 结果:
您还可以使用PCA将高维数据绘制成二维
这里是 PCA.
的实现Scikit 学习 PCA:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html