Files
pytorch-playground/PytorchTutorialCodes/2_pred_with_numpy_2.py
2025-09-29 08:59:47 +02:00

38 lines
981 B
Python

import numpy as np
import math
import matplotlib.pyplot as plt
# Adatok előállítása
x = np.linspace(-math.pi, math.pi, 2000)
y = np.sin(x)
# Véletlen súlyok
a = np.random.randn()
b = np.random.randn()
c = np.random.randn()
d = np.random.randn()
learning_rate = 1e-6
for t in range(2000):
y_pred = a + b * x + c * x ** 2 + d * x ** 3
loss = np.square(y_pred - y).sum()
grad_y_pred = 2.0 * (y_pred - y)
grad_a = grad_y_pred.sum()
grad_b = (grad_y_pred * x).sum()
grad_c = (grad_y_pred * x ** 2).sum()
grad_d = (grad_y_pred * x ** 3).sum()
a -= learning_rate * grad_a
b -= learning_rate * grad_b
c -= learning_rate * grad_c
d -= learning_rate * grad_d
# Ábrázolás
plt.plot(x, y, label='Szinusz függvény')
plt.plot(x, a + b * x + c * x ** 2 + d * x ** 3, label='Tanult polinom', linestyle='--')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Szinusz és tanult polinom összehasonlítása')
plt.legend()
plt.grid(True)
plt.show()