Příklad 2 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 = místnosti).

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.