수업소개
분류스러운 학습을 하기 위해서는 softmax 활성화 함수와 categorical cross entropy 를 손실함수로 사용해야 합니다. 이것에 대해서 알아봅니다.
강의
예제
<html>
<head>
<!-- 버전에 따라서 예제가 동작하지 않는 경우가 있습니다. 아래 버전을 권장합니다. -->
<script src="https://cdn.jsdelivr.net/npm/danfojs@0.1.2/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.4.0/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis"></script>
</head>
<body>
<script>
dfd.read_csv('https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv').then(function(data){
console.log(data);
data.print();
독립변수 = data.loc({columns:['꽃잎길이','꽃잎폭','꽃받침길이','꽃받침폭']});
독립변수.print();
var encoder = new dfd.OneHotEncoder();
종속변수 = encoder.fit(data['품종']);
data['품종'].print();
종속변수.print();
var X = tf.input({ shape: [4]});
var H = tf.layers.dense({ units: 4, activation:'relu'}).apply(X);
//var Y = tf.layers.dense({ units: 3}).apply(H);
var Y = tf.layers.dense({ units: 3, activation:'softmax'}).apply(H);
model = tf.model({ inputs: X, outputs: Y });
//var compileParam = { optimizer: tf.train.adam(), loss: tf.losses.meanSquaredError}
var compileParam = { optimizer: tf.train.adam(), loss: 'categoricalCrossentropy', metrics:['accuracy'] }
model.compile(compileParam);
tfvis.show.modelSummary({name:'요약', tab:'모델'}, model);
// 3. 데이터로 모델을 학습시킵니다.
_history = [];
var fitParam = {
epochs: 100,
callbacks:{
onEpochEnd:
function(epoch, logs){
console.log('epoch', epoch, logs, 'RMSE=>', Math.sqrt(logs.loss));
_history.push(logs);
tfvis.show.history({name:'loss', tab:'역사'}, _history, ['loss']);
tfvis.show.history({name:'accuracy', tab:'역사'}, _history, ['acc']);
}
}
}
model.fit(독립변수.tensor, 종속변수.tensor, fitParam).then(function (result) {
// 4. 모델을 이용합니다.
// 4.1 기존의 데이터를 이용
예측한결과 = new dfd.DataFrame(model.predict(독립변수.tensor));
예측한결과.print();
종속변수.print();
});
})
</script>
</body>
</html>
축하합니다. 여기까지 오시느라 고생하셨습니다. 더 많은 것이 필요한 분은 아래 지식지도를 이용해주세요.

