Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] RuntimeError: expected scalar type Long but found Float

Erro na hora do plot3d

X = torch.tensor([0,1, 2])
y = perceptron(X)

plot3d(perceptron)
plt.plot([X[0]], [X[1]], [X[2]], marker='^', markersize = 20)

E a função:

def plot3d(perceptron):
  w1, w2, w3 = perceptron.weight.data.numpy()[0]
  b = perceptron.bias.data.numpy()

  X1 = np.linspace(-1, 1, 10)
  X2 = np.linspace(-1, 1, 10)

  X1, X2 = np.meshgrid(X1, X2)
  X3 = (b - w1 * X1 - w2 * X2) / w3

  fig = plt.figure(figsize=(10, 8)) 
  ax = fig.add_subplot(projection = '3d')
  ax.view_init(azim=180)
  ax.plot_surface(X1, X2, X3, cmap = 'plasma')

Se alguém souber como soluciona

1 resposta
solução!

Oii, Henrique! Tudo bem?

O erro que está retornando, está ocorrendo porque está sendo passando um tensor de inteiros (torch.tensor([0,1,2])) como entrada para a função perceptron, que espera um tensor de floats.

Uma possível solução para esse problema é converter o tensor de inteiros em um tensor de floats antes de passá-lo para a função perceptron. Uma opção é usar o método .float() do tensor. Por exemplo:

X = torch.tensor([0,1,2]).float()
y = perceptron(X)

plot3d(perceptron)
plt.plot([X[0]], [X[1]], [X[2]], marker='^', markersize = 20)

No exemplo acima, o tensor X será convertido para floats. Realize os testes e veja se o código comporta como esperado.

Espero que dê certo. Continue interagindo no fórum compartilhando suas dúvidas, projetos e sugestões.

Bons estudos, Henrique!