실시예 1 모델


데이터 셔플

훈련하기 전에 항상 데이터를 섞습니다.

모델이 훈련될 때 데이터는 작은 세트(배치)로 나뉩니다. 그런 다음 각 배치가 모델에 공급됩니다. 셔플링은 모델이 동일한 데이터를 다시 가져오는 것을 방지하는 데 중요합니다. 동일한 데이터를 두 번 사용하면 모델이 데이터를 일반화하고 올바른 출력을 제공할 수 없습니다. 셔플링은 각 배치에서 더 다양한 데이터를 제공합니다.

예시

tf.util.shuffle(data);

텐서플로우 텐서

TensorFlow를 사용하려면 입력 데이터를 텐서 데이터로 변환해야 합니다.

// 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]);

데이터 정규화

데이터는 신경망에서 사용하기 전에 정규화되어야 합니다.

min-max를 사용하는 0 - 1 범위는 숫자 데이터에 가장 적합한 경우가 많습니다.

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));

텐서플로우 모델

기계 학습 모델 은 입력에서 출력을 생성하는 알고리즘입니다 .

이 예에서는 3줄을 사용하여 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}));

순차 ML 모델

const 모델 = tf.sequential(); 순차 ML 모델 을 만듭니다 .

순차 모델에서는 입력이 출력으로 직접 흐릅니다. 다른 모델은 다중 입력과 다중 출력을 가질 수 있습니다. Sequential은 가장 쉬운 ML 모델입니다. 다음 레이어에 해당하는 가중치를 사용하여 레이어별로 모델을 구축할 수 있습니다.

텐서플로우 레이어

model.add() 는 모델에 두 개의 레이어를 추가하는 데 사용됩니다.

tf.layer.dense 는 대부분의 경우에 작동하는 레이어 유형입니다. 입력에 가중치 행렬을 곱하고 결과에 숫자(편향)를 더합니다.

모양과 단위

inputShape: [1] 입력이 1개이기 때문입니다(x = 마력).

단위: 1 은 가중치 행렬의 크기를 정의합니다. 각 입력(x 값)에 대해 1개의 가중치.


모델 컴파일

지정된 옵티마이저손실 함수로 모델을 컴파일합니다.

model.compile({loss: 'meanSquaredError', optimizer:'sgd'});

컴파일러는 sgd 옵티마이저를 사용하도록 설정됩니다. 사용하기 쉽고 상당히 효과적입니다.

meanSquaredError 는 모델 예측과 실제 값을 비교하는 데 사용하려는 함수입니다.