Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»úÆ÷ѧϰ£¬Hello World from Javascript!
 
  1947  次浏览      32
 2018-3-13 
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚyq.aliyun.com,Javascript ÊʺÏ×ö»úÆ÷ѧϰÂð£¿ÕâÊÇÒ»¸öÎʺš£µ«Ã¿Ò»Î»¿ª·¢Õß¶¼Ó¦¸ÃÁ˽â»úÆ÷ѧϰ½â¾öÎÊÌâµÄ˼άºÍ·½·¨£¬²¢Ë¼¿¼£ºËü½«»á¸øÎÒÃǵŤ×÷´øÀ´Ê²Ã´£¿Í¬Ñù£¬Ëã·¨ÄÜÁ¦¿ÉÄÜ»áÊÇÏÂÒ»½×¶Î¹¤³ÌʦµÄ±êÅä¡£

µ¼Óï

±¾ÎÄÖ¼ÔÚͨ¹ý½²½âʶ±ðÊÖд×ֵĴ¦Àí¹ý³Ì£¬´ø¶ÁÕßÁ˽â»úÆ÷ѧϰ½â¾öÎÊÌâµÄÒ»°ã¹ý³Ì¡£±¾ÎÄÊʺÏÒÔϱ³¾°µÄ¶ÁÕßÔĶÁ£º

Äã²»ÐèÒª¾ß±¸ Python¡¢C++ µÄ±à³ÌÄÜÁ¦£ºÈ«ÎÄʹÓà Javascript ×÷Ϊ±à³ÌÓïÑÔ£¬ÇÒ²»ÒÀÀµÈκεÚÈý·½¿âʵÏÖ»úÆ÷ѧϰËã·¨£»

Äã²»ÐèÒª¾ß±¸Ëã·¨ÄÜÁ¦ºÍ¸ßÊýµÄ±³¾°£¬±¾ÎÄ»úÆ÷ѧϰËã·¨µÄʵÏÖ²»¹ý 20 ÐдúÂë¡£

×÷ÕßѧʶÓÐÏÞ£¬ÎÄÕÂÖÐÄÑÃâ»áÓÐÊè©£¬»¶Ó­Ö¸Õý¡£

»úÆ÷ѧϰÖÐµÄ Hello World

¾ÍÏñÎÒÃÇѧϰ±à³ÌÓïÑÔÒ»Ñù£¬ÎÒÃǵĵÚÒ»¸ö³¢ÊÔ¾ÍÊÇÔÚÖÕ¶ËÃüÁîÐÐÖÐÊä³öµÄ ¡°Hello World¡±¡£»úÆ÷ѧϰÖÐµÄ ¡°Hello World¡± ±ãÊÇʶ±ðÊÖд×ÖÊý¾Ý¼¯¡£ÊÖд×ÖÊÇÐÎÈçÏÂÃæµÄͼÏñ£º

ÎÒÃÇ¿ÉÒÔ±àдһ¸öÍøÒ³³ÌÐò£¬ÌṩÊÖд°åµÄ¹¦ÄÜÀ´²¶»ñÓû§µÄÊäÈ룬²¢·µ»ØÎÒÃÇʶ±ðµÄÊý×Ö£ºÓû§ÔÚÊÖд°åÄÚдÏ 0 µ½ 9 ÖеÄÈÎÒâÒ»¸öÊý×Ö£¬ÁíÒ»²àÔòÏÔʾÎÒÃÇʶ±ðµÄ½á¹û¡£ÕýÈç Keras.js ÌṩµÄʾÀýÄÇÑù[[1]](#9)£º

ÈçºÎ±àд³öÕâÑùµÄÊÖдʶ±ð³ÌÐòÀ´»ñÈ¡Óû§µÄÊÖдÊäÈë²»ÊÇÎÒÃÇÕâÆªÎÄÕµÄÖØµã¡£ÎÒÃÇÖØµãÊÇ£¬µ±ÎÒÃǵijÌÐòµÃµ½ÕâÑùÒ»ÕÅͼÏñµÄÊý¾Ýºó£¬ÈçºÎʶ±ð³öÕâ×éÊý¾Ý±íʾµÄÊý×Ö£¿

Êý¾ÝµÄ±íʾºÍÊÕ¼¯

ÈËÀàÄܹ»´ÓͼÏñÖлñµÃÐÅÏ¢£¬µ«³ÌÐòÈçºÎÖªµÀ A ͼÊDZíʾ 1£¬B ͼÊDZíʾ 2 £¿Òò´ËÎÒÃÇÐèҪȷ¶¨Êý¾ÝµÄ±íʾ·½Ê½£ºÓÃÔõÑùµÄÒ»ÖÖ·½Ê½À´ÔÚ³ÌÐòÖбí´ïÒ»ÕŰ׵׺Ú×ÖµÄͼÏñËüµÄÏñËØµã·Ö²¼¼°µãµÄºÚ°×¶È£¿

¹Û²ì Keras.js µÄʾÀý£¬Äã»á·¢ÏÖÊÖд°åµÄÃæ»ýÊÇ 240px * 240px¡£¼´ÊÖд°åÄÚÓÐ 57,600 ¸öÏñËØµã¡£ÎÒÃÇ¿ÉÒÔ°ÑËüÃÇÆ½ÆÌ¿ªÀ´£¬²¢ÇÒÓà 0 µ½ 1 µÄÊýÖµ±íʾÿ¸öµãµÄºÚ°×¶È£¬ÆäÖÐÔ½½Ó½ü 1 Ôò±íʾ¸ÃÏñËØµãÔ½ºÚ£¬ÄÇô¾Í¿ÉÒÔÓÃÒ»¸öÊýÖµ¾ØÕóÀ´±íʾÊÖд×Ö£º

ÊÖд°å³ÌÐò»ñµÃÓû§µÄÊäÈë²¢Éú³ÉͼÏñºó£¬Ê¶±ð³ÌÐò½«Í¼Ïñת»»³ÉÎÒÃÇÐèÒªµÄÊý¾Ý¸ñʽ¡£Í¼Ïñʶ±ðÊÇÁíÒ»¸ö¹ã·ºµÄ¿ÎÌ⣬ÔÚÕâÀï²»ÔÙÕ¹¿ª¡£ÎÒÃÇ»áÖ±½ÓʹÓà MNIST Êý¾Ý¼¯[[2]](#9)£¬ËüµÄÊý¾Ý±íʾ·½Ê½ÕýÈçÉÏÃæËùÃèÊöµÄÄÇÑù£¬Ö»ÊÇ MNIST Êý¾Ý¼¯ÖÐÿһÕÅͼƬÊǰüº¬ 28 * 28 ¸öÏñËØµãµÄ¡£

È·¶¨ÁËÊý¾ÝµÄ±íʾ·½Ê½£¬½ÓÏÂÀ´ÎÒÃÇ»¹ÐèÒª¶Ôÿ¸öÊý¾ÝµÄʵ¼Êº¬Òå½øÐбêʶ¡£

»ØÏëÒ»ÏÂÎÒÃÇ×Ô¼ºÊÇÈçºÎÈÏʶÕâЩÊý×ֵģ¿¼´ÎÒÃÇÊÇÔõÑùÈ϶¨Í¼ÏñÖÐµÄ 1 ÐÎ×´±íʾµÄ¾ÍÊÇÊý×Ö 1£¿¡ª¡ª¡ª¡ªÊÂÎïµÄÈÏʶ¡£ÈÏÖªÊÇÓÉËûÈ˽ÌÓýµÄ¡£

ͬÑù£¬ÔÚ»úÆ÷ѧϰÖУ¬ÎÒÃÇÒ²ÐèÒª¡°½ÌÓý¡±»úÆ÷£ºA ÕâÑùµÄÏñËØµãÅÅÐò¾ÍÊÇ 1£¬ B ÕâÑùµÄÏñËØµãÅÅÐòÊÇ 2¡£Õâ¾ÍÊÇѵÁ·Êý¾Ý¡£

ΪÁËÊÕ¼¯ÑµÁ·Êý¾Ý£¬ÎÒÃÇ¿ÉÒÔËæ»úÕÒÈËÔÚÊÖдʶ±ð³ÌÐòÖл­Êý×Ö£¬È»ºó±êʶËüµÄ½á¹û£¬×îÖÕÒÔÈκεÄÐÎʽ£¨Îı¾¡¢±í¸ñ...£©´¢´æ¡£ÒÔÊÖд×ÖΪÀý£¬ÎÒÃÇ¿ÉÒÔÓÃÎı¾µÄ·½Ê½´æ´¢£¬¸ñʽ¿ÉÒÔÊÇÕâÑù£º

0 0 0.3 0 1 0 ... n(=28) | 4
1 0 0.1 0 0 0 ... n(=28) | 6
....
n(=1000)

ÆäÖÐÿһÐдú±íÒ»¸öѵÁ·Êý¾Ý£¬Ê¹Óà ¡°|¡± ·Ö¸îÊý¾ÝµÄ±íʾºÍËü¶ÔÓ¦µÄÊý×Ö¡£

ÔÚ±¾ÎÄÖÐÎÒÃǽ«Ö±½ÓʹÓà MNIST Êý¾Ý¼¯£¬Òò´ËÈçºÎÊÕ¼¯Êý¾ÝÔÚÕâÀï²»ÔÙÕ¹¿ª¡£ÔÚ»úÆ÷ѧϰÖо­³£»áʹÓù«¿ªµÄÊý¾Ý¼¯À´½øÐÐѵÁ·ºÍ²âÊÔ¡£

ͨ¹ýÈ·¶¨Êý¾ÝµÄ±íʾºÍÊÕ¼¯£¬ÎÒÃÇ¿ÉÒÔÁ˽⵽µÄÊÇ£º

Êý¾ÝÊÇÒ»ÇлúÆ÷ѧϰµÄ»ù´¡£»

ѵÁ·Êý¾ÝµÄºÃ»µ½«»áÓ°Ïìµ½ÎÒÃÇ»úÆ÷ѧϰËã·¨Ô¤²âµÄ׼ȷÂÊ£º

ÏëÏóÒ»ÏÂÈç¹ûijЩÊý¾ÝÎÒÃDZêʶ´íÎó£¬°Ñ 1 ±êʶ³É 2£»

ÏëÏóÒ»ÏÂÈç¹ûѵÁ·Êý¾ÝÖÐÓдóÁ¿µÄÖØ¸´Öµ£¬»òij¸öÊý×ÖµÄÊý¾ÝÁ¿Ìرð´ó¶øÁíÍâһЩÊý×ÖµÄÊý¾ÝÁ¿ºÜС¡£

×¼±¸Êý¾Ý

ÎÒÃÇÊÕ¼¯µ½µÄÊý¾Ý¿ÉÄÜ»áÒÔÈκεÄÒ»ÖÖÐÎʽ´æ´¢£¬ÀýÈçÎı¾¡¢±í¸ñ¡¢¶þ½øÖÆÎļþµÈµÈ¡£MNIST Êý¾Ý¼¯ÊÇʹÓöþ½øÖÆ´æ´¢µÄ£¬Òò´ËÔÚ³ÌÐòÖÐÎÒÃÇÐèÒª½«Ëüת»»Îª Javascript ±È½ÏÈÝÒײÙ×÷µÄµÄÊý¾Ý¸ñʽ£¬ÀýÈçÊý×é¡£

±¾ÎÄÖÐÎÒÃǽ«Ê¹ÓÃÒ»¸ö NPM °ü mnist[[3]](#9) ÌṩµÄ£¬ÒѾ­×ª»»ºÃµÄÊý¾Ý£¬ËüµÄ¸ñʽÈçÏ£º

[
{
input: [0, 0.4, 0.5, 0, 0.1, 0, 0, 0, 0, ..., n], // n = 728
output: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0], // 1
},
{
input: [1, 0.4, 0.5, 0, 0.8, 0, 0.1, 0, 1, ..., n], // n = 728
output: [0, 0, 1, 0, 0, 0, 0, 0, 0, 0], // 2
},
....
]

ÆäÖÐ input ÊÇͼÏñµÄÊý¾Ý±íʾ£¬output ÊÇͼÏñʵ¼Ê´ú±íµÄÊý×Ö¡£output ʹÓÃÁËÒ»ÖÖ½Ð×ö One-Hot µÄ±àÂ뷽ʽ£¬ËüÒ»¹²ÓÐ 10 ¸öÏΪ 1 µÄÏî¾ÍÊÇËü±íʾµÄÊý×Ö£¨µÚÒ»ÏîΪ 1 Ôò´ú±íÊÇ 0£¬µÚ¶þÏîΪ 1 Ôò´ú±íÊÇ 2 £¬ÒÔ´ËÀàÍÆ£©¡£

Ñ¡ÔñÒ»ÖÖËã·¨

ͨ¹ýÉÏÃæµÄÊý¾Ý×¼±¸£¬ÎÒÃÇÒѾ­°ÑÒ»¸öÏÖʵÖеÄÎÊÌâת»¯³ÉÁËÒ»¸öÊýѧÎÊÌ⣺¸ø¶¨ 728 ¸ö 0 µ½ 1 Ö®¼äÊýÖµµÄÌØÕ÷£¬Ó¦¸Ã½«Ëü·ÖÀൽ 0 ~ 9 ÄĸöÊý×ÖÖУ¿

Õâ¾ÍÊÇ»úÆ÷ѧϰÖеÄÖ÷ÒªÈÎÎñ¡ª¡ª·ÖÀà¡£ÓкܶàµÄ»úÆ÷ѧϰËã·¨¿ÉÒÔÓÃÀ´½â¾ö·ÖÀàÎÊÌ⣬Îı¾½«Ê¹Óà k-½üÁÚËã·¨(k-NN)[[4]](#9)À´½â¾öÕâ¸öÎÊÌ⣬ÒòΪËü·Ç³£ÓÐЧÇÒÈÝÒ×Àí½â¡£

k-½üÁÚËã·¨¸ÅÊö

ÔÚÒ»¸ö 10 * 10 µÄ¶þÎ¬Æ½ÃæÄÚ»­Ò»ÌõÏß°ÑËü·Ö³É 2 ¸öÇøÓò(A/B)¡£¼ÙÉèÎÒÃDz»ÖªµÀÏßÊÇÈçºÎ»­µÄ£¬µ«ÏÖÒÑÖªÓÐ 4 ¸öµã£¬a µã×ø±êÊÇ (1, 1) ÊôÓÚÇøÓò A£¬b µã×ø±êÊÇ (2, 2) ÊôÓÚÇøÓò A£¬c µã×ø±êÊÇ (9, 9) ÊôÓÚÇøÓò B£¬d µã×ø±êÊÇ (8, 8) ÊôÓÚÇøÓò B¡£ÕâʱºòÔÙ¸ø¶¨Ò»¸ö e µã×ø±êÊÇ (8.5, 8.5) £¬ÇëÎÊËü×îÓпÉÄÜÔÚÄĸöÇøÓòÄÚ£¿

¶þÎ¬Æ½ÃæÍ¼Ê¾Àý

¾ø´ó¶àÊýÈ˶¼»á˵¡°¿ÉÄÜÊÇ B¡±¡£ÎÒÃÇÊÇÈçºÎÕâ¸ö´ð°¸µÄ£¿¡ª¡ªÒòΪËüºÍ c, d ¡°¿´ÆðÀ´¸ü½Ó½üһЩ£¬¸üÓпÉÄÜÔÚͬһ¸öÇøÓò¡±¡£Í¬ÑùµÄÍÆÂÛ¿ÉÒÔÑÓÉìÖÁÈýά¡¢ËÄάÉõÖÁ¸ü¶àγ¶ÈµÄÊý¾ÝÖС£MNIST µÄÊý¾Ý±íʾ¾ÍÊÇ 728 ¸öÌØÕ÷µÄ¶àγÊý¾Ý£¬k-½üÁÚË㷨ͬÑùÊÊÓá£

´æÔÚÒ»¸öѵÁ·Ñù±¾¼¯£¬²¢ÇÒÑù±¾¼¯ÖÐÿ¸öÊý¾Ý¶¼´æÔÚ±êÇ©£¬¼´ÎÒÃÇÖªµÀÑù±¾¼¯ÖÐÿһÊý¾ÝÓëËùÊô·ÖÀàµÄ¶ÔÓ¦¹ØÏµ¡£ÊäÈëûÓбêÇ©µÄÐÂÊý¾Ýºó£¬½«ÐÂÊý¾ÝµÄÿ¸öÌØÕ÷ÓëÑù±¾¼¯ÖÐÊý¾Ý¶ÔÓ¦µÄÌØÕ÷½øÐбȽϣ¬È»ºóËã·¨ÌáÈ¡Ñù±¾ÌØÕ÷×î½üÁڵķÖÀà±êÇ©¡£Ò»°ãÀ´Ëµ£¬ÎÒÃÇֻѡÔñÑù±¾Êý¾Ý¼¯ÖÐǰ k ¸ö×îÏàËÆµÄÊý¾Ý£¬Õâ¾ÍÊÇ k-½üÁÚËã·¨µÄ k µÄ³ö´¦¡£

¡ª¡ª¡¶»úÆ÷ѧϰʵս¡·k ½üÁÚËã·¨

Á½¸öÏòÁ¿Ö®¼äµÄ¾àÀë¿ÉÒÔͨ¹ýÅ·¼¸ÀïµÃ¾àÀ빫ʽÇóµÃ£º

ÓÚÊÇʵÏÖÒ»¸ö k-NN Ëã·¨¾ÍºÜ¼òµ¥ÁË£º

function classify(x, trainingData, labels, k) {

// È·¶¨Ä¿±êµã x ÓëѵÁ·Êý¾ÝÖÐÿ¸öµãµÄ¾àÀ루ŷ¼¸ÀïµÃ¾àÀ빫ʽ£©
const distances =[];
trainingData.forEach(element => {
let distance = 0;
element.forEach((value, index) => {
const diff = x[index] - value;
distance += (diff * diff);
});
distances.push(Math.sqrt(distance));
});

// ½«ÑµÁ·Êý¾Ý°´ÕÕÓë x µãµÄ¾àÀë´Ó½üµ½Ô¶ÅÅÐò
const sortedDistIndicies = distances
.map((value, index) => {
return {value, index};
})
.sort((a, b) => a.value - b.value );

// È·¶¨Ç° k ¸öµãÀà±ðµÄ³öÏÖÆµÂÊ
const classCount = {};
for (let i = 0; k > i; i++) {
const voteLabel = labels[sortedDistIndicies[i].index];
classCount[voteLabel] = (classCount[voteLabel] || 0) + 1;
}

// ·µ»Ø³öÏÖÆµÂÊ×î¸ßµÄÀà±ð×÷Ϊµ±Ç°µãµÄÔ¤²â·ÖÀà
let predictedClass = '';
let topCount = 0;
for (const voteLabel in classCount) {
if (classCount[voteLabel] > topCount) {
predictedClass = voteLabel;
topCount = classCount[voteLabel];
}
}

return predictedClass;
}

²âÊÔËã·¨

ΪÁËÑéÖ¤ÎÒÃǵÄËã·¨µÄЧ¹û£¬ÎÒÃÇÐèÒª¶ÔÆä½øÐвâÊÔ¡£Õâ¾ÍÐèÒªÒýÈë²âÊÔÊý¾Ý¡£ÔÚ»úÆ÷ѧϰÖÐͨ³£»á½«ÊÕ¼¯µ½µÄÊý¾Ýͨ¹ýÒ»¶¨µÄ·½·¨»®·ÖΪѵÁ·Êý¾ÝºÍ²âÊÔÊý¾ÝÈ»ºóÓÃÓÚѵÁ·ºÍ²âÊÔ¡£ÈçºÎ»®·ÖÊý¾ÝÔÚÕâÀï²»Õ¹¿ª£¬ÔÚ±¾Ê¾ÀýÖУ¬ÎÒÃǰ´ÕÕ 80:20 µÄ±ÈÀýÀ´»®·ÖѵÁ·ºÍ²âÊÔÊý¾Ý£¬»¥³âÐÔºÍËæ»úÐÔÓÉ MNIST ¿â½øÐб£Ö¤¡£

Äõ½ÑµÁ·ºÍ²âÊÔÊý¾ÝºóÎÒÃǾͿÉÒÔ¶ÔÉÏÒ»²½±àдµÄËã·¨½øÐвâÊÔÁË£¬ÎÒÃÇÓôíÎóÂÊÀ´ÆÀ¹ÀËã·¨µÄ¿É¿¿ÐÔ£¬´íÎóÂÊÔ½µÍÔòÔ½¿É¿¿£º

const classify = require('./kNN');

// 1. ÊÕ¼¯Êý¾Ý£ººöÂÔ£¬Ö±½ÓʹÓà MNIST
const mnist = require('mnist');

// 2. ×¼±¸Êý¾Ý
let trainingImages = [];
let labels = [];

// »®·ÖÊý¾Ý
const trainingCount = 8000;
const testCount = 2000;
const set = mnist.set(trainingCount, testCount);
const trainingSet = set.training;
const testSet = set.test;

// ΪÎÒÃÇµÄ k-NN Ë㷨׼±¸Ìض¨µÄÊý¾Ý¸ñʽ
trainingSet.forEach(({input, output}) => {

// One-Hot to number
const number = output.indexOf(output.reduce((max, activation) => Math.max(max, activation), 0));
trainingImages.push(input);
labels.push(number);
});

// 3. ·ÖÎöÊý¾Ý£ºÔÚÃüÁîÐÐÖмì²éÊý¾Ý£¬È·±£ËüµÄ¸ñʽ·ûºÏÒªÇó
console.log('trainingImages', JSON.stringify(trainingImages));
console.log('labels', JSON.stringify(labels));

// 4. ²âÊÔËã·¨
let errorCount = 0;
const startTime = Date.now();
testSet.forEach(({input, output}, key) => {
const number = output.indexOf(output.reduce((max, activation) => Math.max(max, activation), 0));
const predicted = classify(input, trainingImages, labels, 3);
const result = predicted == number;
console.log(`${key}. number is ${number}, predicted is ${predicted}, result is ${result}`);

if (!result) {
errorCount++;
}
});

console.log(`The total number of errors is: ${errorCount}`);
console.log(`The total error rate is: ${errorCount/testCount}`);
console.log(`Spend: ${(Date.now() - startTime) / 1000}s`);

ÈçÎÞÒâÍ⣬ÄãµÄÖն˽«»áÊä³öÕâÑùµÄ½á¹û£º

×îÖÕ´íÎóÂʵÄÖµ´óÔ¼ÊÇ 5%¡£Õâ¸ö½á¹ûºÃÂ𣿲¢²»ºÃ¡£ÎÒÃÇ¿ÉÒÔͨ¹ý¸Ä±ä k µÄÖµ¡¢¸Ä±äѵÁ·Ñù±¾µÄÊýĿӰÏì k-½üÁÚËã·¨µÄ´íÎóÂÊ£¬¶ÁÕß¿ÉÒÔ³¢ÊԸıäÕâЩ±äÁ¿Öµ¹Û²ì´íÎóÂʵı仯¡£Êµ¼ÊÉÏ£¬Ö»Òª½« k-½üÁÚËã·¨ÉÔ¼Ó¸ÄÁ¼£¬ÎÒÃǾÍÄܹ»°Ñ´íÎóÂʽµµ½ 1% ÒÔÏ£¡

±í¸ñÖÐÁгöÁËһЩ k-½üÁÚËã·¨¶Ô MNIST Êý¾Ý¼¯½øÐвâÊԵĴíÎóÂÊ

ÎÒÃÇÒ²Ó¦¸Ã×¢Òâµ½µÄÊÇ£¬ÎÒÃǵÄËã·¨ÔÚ 8000 ÌõѵÁ·Êý¾Ý¼¯ºÍ 2000 Ìõ²âÊÔÊý¾Ý¼¯ÉϽøÐвâÊÔ£¬ÔËÐÐÁË 325 Ã룡ÕâÊÇÒ»¸öºÜ²îµÄ½á¹û¡£ÔÚʵ¼ÊÉú²ú»·¾³ÖУ¬ÎÒÃDz»½öÓ¦¸Ã¹Ø×¢×¼È·ÂÊÒ²Ó¦¸Ã¹Ø×¢Ëã·¨µÄÖ´ÐÐЧÂÊ¡£

ʹÓÃËã·¨

Ö»Òª²âÊÔµÄË㷨Ч¹û·ûºÏÔ¤ÆÚ£¬ÎÒÃǾͿÉÒÔ½«Ëã·¨²¿Êðµ½Éú²ú»·¾³½øÐÐʹÓÃÁË¡£ÎÒÃÇ¿ÉÒÔ½«Ëã·¨ºÍÊÖдʶ±ð³ÌÐò½áºÏÆðÀ´£¬Íê³ÉÒ»ÕûÌ×»ñÈ¡ÊäÈë -> Ëã·¨Ô¤²â -> Êä³ö½á¹ûµÄÁ÷³Ì£ºÊ×ÏÈÊÖдʶ±ð³ÌÐò½«Óû§ÊäÈëµÄͼÏñת»»ÎªÎÒÃÇÆÚÍûµÄÊý¾Ý¸ñʽ£¬È»ºóÖ´ÐÐÎÒÃǵÄËã·¨»ñȡԤ²âµÄ·ÖÀà¡£´úÂë¿ÉÄÜÊÇÕâÑù£º

// ÊÖдʶ±ð³ÌÐò½«Óû§ÊäÈëµÄͼÏñת»»ÎªÎÒÃÇÆÚÍûµÄÊý¾Ý¸ñʽ
const input = [0, 0.3, 1, 1, 0, 0, 0.2, ...];

// Ö´ÐÐËã·¨
classify(input, trainingImages, labels, 3);

ºÜÒź¶£¬ÔÚÖ´ÐÐË㷨ʱÎÒÃÇ»¹ÊÇ¿´µ½ÁË trainingImages µÄ´æÔÚ¡£ÕâÒâζ×Åÿ´ÎÔ¤²âÎÒÃǵĻúÆ÷¶¼ÐèÒª¸øÑµÁ·Êý¾Ý×¼±¸¸ñÍâµÄ´æ´¢¿Õ¼ä¡£¼ÙÉèѵÁ·Êý¾ÝºÜ´ó£¨ÕâºÜ³£¼û£©£¬Ôò»á¸øÎÒÃǵÄÉú²ú»·¾³»úÆ÷Ôì³É¾Þ´óµÄÄÚ´æÑ¹Á¦¡£

ÿ´Îµ÷ÓÃËã·¨»¹ÐèÒª´«ÈëѵÁ·Êý¾ÝµÄ·½Ê½¼´ÀË·Ñ´æ´¢¿Õ¼äÒ²²»ÓÅÑÅ£¬ËüÖ»ÄÜ×÷ΪÎÒÃǵÄʾÀý½øÐÐʹÓá£

½øÒ»²½Ë¼¿¼

±¾ÎÄÎÒÃÇʹÓà Javascript ʵÏÖÁËÒ»¸ö·Ç³£¼òµ¥µÄ»úÆ÷ѧϰËã·¨£¬²¢ÓÃÆäÀ´²âÊÔ MNIST Êý¾Ý¼¯£¬ÍêÕû´úÂëʵÏÖÔÚÕâ¸ö²Ö¿âÖС£ÕâÖ»ÊÇÒ»¸ö¼òµ¥µÄʾÀý£¬µ«´ÓÖÐÎÒÃÇÁ˽⵽ÁË»úÆ÷ѧϰµÄ»ù±¾¸ÅÄîºÍ½â¾öÎÊÌâµÄÒ»°ã¹ý³Ì¡£½øÒ»²½Ë¼¿¼£¬ÉÏÃæµÄÁ÷³ÌÖÐÿһ²½¶¼¿ÉÄܱ»ÓÅ»¯£º

¶ÔÓÚÊÖд×Ö£¬»¹ÓÐûÓÐÆäËûµÄÊý¾Ý±íʾ·½Ê½£¿ÀýÈçÎÒÃÇ·ÇÒªÓà 0 µ½ 1 µÄÊýÖµÀ´±íʾµãµÄºÚ°×¶ÈÂð£¿

ѵÁ·Êý¾Ý¼¯ÊÇÔ½´óÔ½ºÃÂð£¿ÀýÈçÎÒÃǽ«ÊÖд×ÖËùÓеÄÌØÕ÷ÅÅÁÐ×éºÏ (28^28) ¸öÊý¾ÝÁ¿×÷ΪѵÁ·Êý¾Ý¼¯£»

ÈçºÎµ÷ÕûËã·¨²ÎÊýÒÔ»ñµÃ×î¼ÑµÄÊÕÒæ£¨×¼È·ÂʺÍЧÂÊ£©£¿

   
1947 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

»ùÓÚͼ¾í»ýÍøÂçµÄͼÉî¶Èѧϰ
×Ô¶¯¼ÝÊ»ÖеÄ3DÄ¿±ê¼ì²â
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
ÏîĿʵս£ºÈçºÎ¹¹½¨ÖªÊ¶Í¼Æ×
 
Ïà¹ØÎĵµ

5GÈ˹¤ÖÇÄÜÎïÁªÍøµÄµäÐÍÓ¦ÓÃ
Éî¶ÈѧϰÔÚ×Ô¶¯¼ÝÊ»ÖеÄÓ¦ÓÃ
ͼÉñ¾­ÍøÂçÔÚ½»²æÑ§¿ÆÁìÓòµÄÓ¦ÓÃÑо¿
ÎÞÈË»úϵͳԭÀí
Ïà¹Ø¿Î³Ì

È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ&TensorFlow
»úÆ÷ÈËÈí¼þ¿ª·¢¼¼Êõ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
ͼÏñ´¦ÀíËã·¨·½·¨Óëʵ¼ù