我知道 matplotlib 3D 对于以正确的顺序绘制多个 3D 对象(平面、线、点)是不可靠的:请参阅Matplotlib 3D plot zorder 问题和如何绘制相交平面?. 然而这些问题似乎很老,所以提出了解决方案。因此,我想知道是否有针对以下特定简单场景的一些新开发、工具、变通方法或硬编码解决方案:
import mpl_toolkits.mplot3d as a3
import matplotlib.pylab as plt
import numpy as np
fig = plt.figure()
ax = a3.Axes3D(fig)
# create an orizontal plane
corners = [[0,0,0],[0,5,0],[5,5,0],[5,0,0]]
tri = a3.art3d.Poly3DCollection([corners], alpha=1)
tri.set_color('w')
tri.set_edgecolor('k')
ax.add_collection3d(tri)
# plot a vector
ax.plot([2,2],[2,2],[0,4], c = 'r')
# plot some points
ax.scatter([1,3],[1,3],[1,3], c = 'r')
ax.set_xlim([0, 5.0])
ax.set_ylim([0, 5.0])
ax.set_zlim([0, 2.5]);
plt.show()
Run Code Online (Sandbox Code Playgroud)
在此图像中,您可以看到可视化问题:向量不是从平面开始,因为它的初始点是 (2,2,0)
我是 DNN 和 pytorch 的初学者。我正在处理一个多分类问题,其中我的标签被编码为一个单热向量,比如维度D。为此,我使用了 CrossEntropyLoss。但是现在我想修改或更改这样的标准,以惩罚与实际值相距甚远的值,例如分类 4 而不是 5 比分类 2 而不是 5。
Pytorch 中是否已经内置了一个函数来实现这种行为?否则我如何修改 CrossEntropyLoss 来实现它?