Ahora estoy aprendiendo la construcción de redes neuronales en PyTorch. Estos son los códigos de corte del .py
archivo:
x = torch.unsqueeze(torch.linspace(-1, 1, 1000), dim=1)
y = x.pow(2) + 0.1*torch.normal(torch.zeros(*x.size()))
Estoy bastante comfused acerca de la utilidad del *
operador antes x.size()
. Traté de eliminarlo y trazar el gráfico de dispersión, que se probó el mismo que el uno con *
no eliminado.
También comprobé la documentación oficial size
en https://pytorch.org/docs/stable/tensors.html pero no podía entenderlo.
Imagen del artículo torch.size en la documentación
Se lo agradecería mucho si me puede ayudar.
la razón de que * no hace ninguna diferencia en los resultados que aquí se debe a torch.zero
salvo tanto un número variable de argumentos y una colección como una lista o tupla como se ha mencionado aquí . Esto no significa que * sí mismo es inútil.
Entonces, puesto que torch.Size()
la clase es una subclase de tupla Python, uno puede descomprimirlo usando *. ( x.size()
Devolverá un torch.Size()
objeto)
Así que para concluir, x.size()
le daría (1000, 1)
y *x.size()
en el argumento le daría 1000, 1
y ambos son aceptados portorch.zeros()