import torch import matplotlib.pyplot as plt x = torch.linspace(-2, 2, 50) y = -1.13*x-2.14*x**2+3.15*x**3-0.01*x**4+0.512 plt.scatter(x.data.numpy(), y.data.numpy(), "r") plt.show()有什么错误
时间: 2023-11-27 10:02:26 浏览: 69
代码中的 `plt.scatter` 函数的参数顺序有误,应该是先传入 `x` 数据,再传入 `y` 数据,最后才是设置点的属性。修改后的正确代码如下:
```python
import torch
import matplotlib.pyplot as plt
x = torch.linspace(-2, 2, 50)
y = -1.13*x-2.14*x**2+3.15*x**3-0.01*x**4+0.512
plt.scatter(x.data.numpy(), y.data.numpy(), c="r")
plt.show()
```
这样就可以正确地显示散点图了。
相关问题
import torch import numpy as np import matplotlib.pyplot as plt x = np.linspace(-10, 10, num=100) act = torch.nn.SiLU() pred = act(torch.from_numpy(x)) y = pred.detach().numpy() plt.plot(x, y) plt.show() plt.waitforbuttonpress()报错了
在使用`plt.waitforbuttonpress()`函数时,需要在图像窗口中按下鼠标或键盘才能继续执行程序。如果没有按下任何键或鼠标,程序就会一直停留在这里,直到用户手动关闭窗口。但是在一些情况下,可能会出现无法正常响应鼠标或键盘事件的情况,导致程序一直停留在这里,这时就会出现错误。
可以尝试使用`plt.show(block=True)`或者`input()`代替`plt.waitforbuttonpress()`来等待用户输入,例如:
```
import torch
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, num=100)
act = torch.nn.SiLU()
pred = act(torch.from_numpy(x))
y = pred.detach().numpy()
plt.plot(x, y)
plt.show(block=True)
```
或者
```
import torch
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, num=100)
act = torch.nn.SiLU()
pred = act(torch.from_numpy(x))
y = pred.detach().numpy()
plt.plot(x, y)
input("Press Enter to continue...")
```
这样就可以等待用户输入后再继续执行程序。
def create_frustum(self): # Create grid in image plane h, w = self.cfg.IMAGE.FINAL_DIM downsampled_h, downsampled_w = h // self.encoder_downsample, w // self.encoder_downsample # Depth grid depth_grid = torch.arange(*self.cfg.LIFT.D_BOUND, dtype=torch.float) depth_grid = depth_grid.view(-1, 1, 1).expand(-1, downsampled_h, downsampled_w) n_depth_slices = depth_grid.shape[0] # x and y grids x_grid = torch.linspace(0, w - 1, downsampled_w, dtype=torch.float) x_grid = x_grid.view(1, 1, downsampled_w).expand(n_depth_slices, downsampled_h, downsampled_w) y_grid = torch.linspace(0, h - 1, downsampled_h, dtype=torch.float) y_grid = y_grid.view(1, downsampled_h, 1).expand(n_depth_slices, downsampled_h, downsampled_w) # Dimension (n_depth_slices, downsampled_h, downsampled_w, 3) # containing data points in the image: left-right, top-bottom, depth frustum = torch.stack((x_grid, y_grid, depth_grid), -1) return nn.Parameter(frustum, requires_grad=False)这里的frustum可以可视化吗?
可以的,你可以使用Matplotlib库将`frustum`可视化。以下是一个简单的示例代码,可以将`frustum`中的数据点可视化为散点图:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 将frustum转换为Numpy数组
frustum_np = frustum.detach().cpu().numpy()
# 创建散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(frustum_np[:, :, :, 0].flatten(),
frustum_np[:, :, :, 1].flatten(),
frustum_np[:, :, :, 2].flatten(),
s=1)
# 设置坐标轴标签
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('depth')
# 显示图像
plt.show()
```
这将显示一个三维散点图,其中x轴和y轴分别对应于图像中的水平和垂直坐标,z轴对应于深度值。
阅读全文