Příklad 1 Model
Náhodně data
Před tréninkem data vždy zamíchejte.
Když je model trénován, data jsou rozdělena do malých sad (dávek). Každá dávka je pak přiváděna do modelu. Promíchání je důležité, aby se zabránilo tomu, že model získá stejná data znovu. Pokud použijete stejná data dvakrát, model nebude schopen data zobecnit a poskytnout správný výstup. Náhodné míchání poskytuje lepší rozmanitost dat v každé dávce.
Příklad
tf.util.shuffle(data);
Tenzory TensorFlow
Chcete-li použít TensorFlow, vstupní data je třeba převést na data tenzoru:
// Map x values to Tensor inputs
const inputs = values.map(obj => obj.x);
// Map y values to Tensor labels
const labels = values.map(obj => obj.y);
// Convert inputs and labels to 2d tensors
const inputTensor = tf.tensor2d(inputs, [inputs.length, 1]);
const labelTensor = tf.tensor2d(labels, [labels.length, 1]);
Normalizace dat
Data by měla být před použitím v neuronové síti normalizována.
Rozsah 0 - 1 s použitím min-max je často nejlepší pro číselná data:
const inputMin = inputTensor.min();
const inputMax = inputTensor.max();
const labelMin = labelTensor.min();
const labelMax = labelTensor.max();
const nmInputs = inputTensor.sub(inputMin).div(inputMax.sub(inputMin));
const nmLabels = labelTensor.sub(labelMin).div(labelMax.sub(labelMin));
Model Tensorflow
Model strojového učení je algoritmus, který vytváří výstup ze vstupu.
Tento příklad používá 3 řádky k definování modelu ML :
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
model.add(tf.layers.dense({units: 1, useBias: true}));
Sekvenční ML model
const model = tf.sequential(); vytvoří sekvenční model ML .
V sekvenčním modelu vstup proudí přímo k výstupu. Jiné modely mohou mít více vstupů a více výstupů. Sekvenční je nejjednodušší ML model. Umožňuje vám vytvořit model vrstvu po vrstvě s váhami, které odpovídají následující vrstvě.
Vrstvy TensorFlow
model.add() se používá k přidání dvou vrstev do modelu.
tf.layer.dense je typ vrstvy, který funguje ve většině případů. Vynásobí své vstupy váhovou maticí a k výsledku přidá číslo (bias).
Tvary a jednotky
inputShape: [1] protože máme 1 vstup (x = koňská síla).
jednotky: 1 definuje velikost matice vah: 1 váha pro každý vstup (hodnota x).
Sestavení modelu
Zkompilujte model se zadaným optimalizátorem a ztrátovou funkcí:
model.compile({loss: 'meanSquaredError', optimizer:'sgd'});
Kompilátor je nastaven na použití optimalizátoru sgd . Je to jednoduché na použití a docela efektivní.
meanSquaredError je funkce, kterou chceme použít k porovnání předpovědí modelu a skutečných hodnot.