Как построить уклон от простого персептрона - PullRequest
0 голосов
/ 06 марта 2019

Я хочу построить наклон y = mx + b при изменении веса, но я не знаю, как получить значения m и b

Вот код:

import numpy as np
import matplotlib.pyplot as plt

def sign(x):
  return 1 if x > 0 else 0

def get_mse(predicted_data, targets):
  error = predicted_data - targets
  return np.square(error).sum()/len(targets)

fit_data = np.array([[1,0,0],
                     [1,0,1],
                     [1,1,0],
                     [1,1,1],])

targets = np.array([0,0,0,1])
weights = np.array([0,0,0])
lr = 1
epochs = 10

mse_hist = []

for _ in range(epochs):
  model_outputs = []
  for i in range(len(targets)):
    y = (fit_data[i] * weights).sum()
    y = sign(y)
    error = targets[i] - y
    weights = weights + fit_data[i] * error * lr

    model_outputs.append(y)
  mse = get_mse(model_outputs, targets)
  mse_hist.append(mse)

Здесь участок склона должен быть, по крайней мере, так я думаю

  print("Weights:", weights)
  print("Mse:", mse_hist[-1])
  plt.plot(mse_hist)
  plt.xlabel('Iterations')
  plt.ylabel('Mean Squared Error')
  plt.pause(0.5)

plt.show()

input_data = ([1,1,1])
prediction = (input_data * weights).sum()
prediction = sign(prediction)
print("Prediction:", prediction)

Спасибо за помощь

...