практическое использование нейросети
Нечего делать, решил изучить простейшую нейросеть на практическом примере. Задача: поддерживать температуру диска в 37 градусов регулируя скорость куллера (PWM 0-1023). Берем простейший пример перцептрона:
import numpy as np
def sigmoid(x):
return 1/(1 + np.exp(-x))
training_inputs = np.array ([[1,0,0,0],
[0,1,1,0],
[1,0,1,1],
[1,1,0,1]])
training_outputs = np.array([[0],
[1],
[1],
[0]])
np.random.seed(1)
synaptic_weights = 2 * np.random.random((4,1)) - 1
for i in range(100000):
input_layer = training_inputs
outputs = sigmoid(np.dot(input_layer, synaptic_weights))
err = training_outputs - outputs
adjustments = np.dot(input_layer.T, err * (outputs))
synaptic_weights += adjustments
print("веса после обучения")
print(synaptic_weights)
print("result")
print(outputs)
берем температуру диска из smartctl
и статистику нагрузки
iostat -m
Device tps MB_read/s MB_wrtn/s
sda 4.00 0.00 0.00
...
sda 76.00 0.00 85.50
...
sda 105.00 98.00 0.00
Подставляем это все во входные данные:
training_inputs = np.array ([[37,4,0,0],
[39,76,0,85],
[38,105,98,0],
[37,0,0,0]])