LINUX.ORG.RU

История изменений

Исправление Obezyan, (текущая версия) :

Вам стоит немного изменить и данные и сеть.

Входные данные: температура от датчика, ее нужно нормализовать - загнать в значения 0..1. Ноль это скажем 30 градусов, та температура когда вентилятор выключен, 1 это 90 градусов - когда вентилятор работает на 100 процентов. Температуры просто пример, подставьте желаемые.

Выходные данные: обороты вентилятора в диапазоне от 0 до 1, где 0 это 0 оборотов, 1 - 4500 оборотов или сколько там ваш вентилятор может давать в максимуме.

Функция активации: лучше сменить сигмоиду на relu потому что вам нужна линейная зависимость в диапазоне от 0 до 1, а у сигмоиды к концам диапазона игреки слабо реагируют на изменения в иксах.

Если у вас несколько датчиков и несколько вентиляторов регулируемых, отдельно то нужно передавать массивы

training_inputs = np.array ([[0.21,0.22,0.21,0.35],
                            [0.9,0.88,0.85,0.82])

Выходными данными будут обороты для каждого вентилятора

training_outputs = np.array([0.3, 0.31, 0.3, 0.33],
                            [0.8, 0.79, 0.77, 0.71])

Если же все вентиляторы имеют общую регулировку тогда имеет смысл передавать температуру того диска где она максимальна, а в результате возвращать обороты одинаковые для всех вентиляторов

training_inputs = np.array ([[0.35],
                            [0.9]])
training_outputs = np.array([0.33],
                            [0.79])

Исходная версия Obezyan, :

Вам стоит немного изменить и данные и сеть.

Входные данные: температура от датчика, ее нужно нормализовать - загнать в значения 0..1. Ноль это скажем 30 градусов, та температура когда вентилятор выключен, 1 это 90 градусов - когда вентилятор работает на 100 процентов. Температуры просто пример, подставьте желаемые.

Выходные данные: обороты вентилятора в диапазоне от 0 до 1, где 0 это 0 оборотов, 1 - 4500 оборотов или сколько там ваш вентилятор может давать в максимуме.

Функция активации: лучше сменить сигмоиду на relu потому что вам нужна линейная зависимость в диапазоне от 0 до 1, а у сигмоиды к концам диапазона игреки слабо реагируют на изменения в иксах.

Если у вас несколько датчиков и несколько вентиляторов регулируемых, отдельно то нужно передавать массивы

training_inputs = np.array ([[0.21,0.22,0.21,0.35],
                            [0.9,0.88,0.85,0.82])

Выходными данными будут обороты для каждого вентилятора

training_outputs = np.array([0.3, 0.31, 0.3, 0.33],
                            [0.8, 0.79, 0.77, 0.71])

Если же все вентиляторы имеют общую регулировку тогда имеет смысл передавать температуру того диска где она максимальна, а в результате возвращать обороты одинаковые для всех вентиляторов

training_inputs = np.array ([[0.35],
                            [0.9])
training_outputs = np.array([0.33],
                            [0.79])