如何编写栅格图?

问题描述 投票:0回答:3

我在 google colab 上使用 pytorch。 下面我有一个张量矩阵,这就是例子,实际上矩阵大小约为 50 个神经元和 30,000~50,000 次。

a= torch.tensor([[0., 0., 0., 0., 0.],
                 [0., 0., 0., 0., 1.],
                 [0., 1., 0., 1., 0.]])

每个值是,

a= torch.tensor([[Neuron1(t=1), N2(t=1), N3(t=1), N4(t=1), N5(t=1)],
                 [N1(t=2), N2(t=2), N3(t=2), N4(t=2), N5(t=2)],
                 [N1(t=3), N2(t=3), N3(t=3), N4(t=3), N5(t=3)]])

1 表示神经元激活,0 表示不激活。
所以

Neuron5(t=2)
Neuron2(t=3)
Neuron4(t=3)
正在发射。
然后,我想使用这个矩阵制作如下所示的栅格图或散点图,
点显示发射神经元。

神经元数量
1|
2|          *
3|
4|          *
5|__ *_____时间
    1  2  3

执行此操作的最佳 python 代码是什么? 我现在不知道了。 感谢您的阅读。

python pytorch google-colaboratory
3个回答
2
投票

您可以按照以下步骤轻松完成:

import matplotlib.pyplot as plt
a= torch.tensor([[0., 0., 0., 0., 0.],
                 [0., 0., 0., 0., 1.],
                 [0., 1., 0., 1., 0.]],device='cuda')
plt.scatter(*torch.where(a.cpu()))

1
投票

高分辨率版本,源自 Gil 先生的代码。

a= ~~~a huge torch.tensor (50 neurons and 30,000 time)~~~

fig = plt.figure(facecolor="w", figsize=(300,5))
ax = fig.add_subplot(111)
ax.scatter(*torch.where(a.cpu()),
                      s=0.05[![enter image description here][1]][1],
                      c="black",
                      linewidths="0")
plt.savefig("rascatter.png",format="png", dpi=120)

0
投票

这里有两个答案。非常感谢大家。

一个是 Gil Pinsky 先生,另一个是 tgrandje 先生。 吉尔先生的代码在上面。谢谢。

这是我根据 tgrandje 先生的建议编写的代码。

a=input_list
b = a.to('cpu').detach().numpy().copy()
c=b.T
raster = plt.imshow(c,cmap="Greys",aspect=1)
# plt.show
plt.savefig("raster.png", format="png", dpi=900)
© www.soinside.com 2019 - 2024. All rights reserved.