è¡éãèªã¿åãæåèªèAIã®éçº
å æ¥ã®ã¨ã³ããªã§ãæ¸ãã¾ããã10æã«ææ¸ãæåèªèãæ¥ã¨ãã¦ããä¼ç¤¾ã«è»¢è·ãã¾ããã
ææ¸ãæåã®èªèã»ã»ã»ã¨èãã¨ãMNISTãªã©ã®å°è±¡ããæ©æ¢°å¦ç¿ã®ç·´ç¿åé¡ã®ããã«æãã人ãããããç¥ãã¾ããããå®éã«äºæ¥ã¬ãã«ã®ãã®ãæ§ç¯ãããã¨ããã¨ããã¾ã§åç´ã§ã¯ããã¾ããã
ç¹ã«æ¥æ¬èªã¯æå種ãå¤ããæ¼¢åãã«ã¿ã«ããã²ãããªã®ã¿ãªãããã¢ã«ãã¡ãããï¼å ¨è§ã»åè§ï¼ã丸æ°åãªã©ã®ç¹æ®æåã«è³ãã¾ã§ãå¾åã®ç°ãªãå¤ç¨®å¤æ§ãªæåã使ç¨ããããã®èªèã¯ä¸çç¸ã§ã¯è¡ãã¾ããã
ãããªä¸ã§ããæè¿ç¹ã«æ³¨ç®åº¦ãé«ãããã¤èªèãé£ããã¨ããã¦ããæå種ããè¡éãã§ãã
4å33ç§ã«ä»£è¡¨ãããè¸è¡åéã§ã®ãè¡éãã®éè¦æ§ã¯ããç¥ãããã¨ããã§ãããã®ã¿ãªãããããè¨å·ã®æ±ãã«å³å¯ã¨æãããæ°å¦ãç©çå¦ãªã©ã®åéã«ããã¦ã証æã®ç´°é¨ããè¡éãã«è¨ããèªè ã®ç·´ç¿åé¡ã¨ãªã£ããããã°ãã¨ç¨ãããã¨ã§ãè¡éããèªã¿åããè¤éãªæ°å¼ãæ±ããããå½¢ã«å¤å½¢ãããã¨ãæ¥å¸¸çã«è¡ããã¦ãã¾ãã
å®ç¨é¢ã«ããã¦ããä¾ãã°æ°å¦è
ãã§ã«ãã¼ã¯ãè¡éããå©ç¨ãã¦æ°å¤ã®æ°å¦è
ã«ãã360å¹´ã«æ¸¡ãåãçµã¿ãå¿
è¦ãªè¨¼æãå§ç¸®ãã¦æ¸ãè¾¼ããã¨ã«æåãã¾ãããããã®æ
å ±ã®å§ç¸®å¹çã®é«ããããããæ¥æ¬ã«ããã¦ãè¡éãã¯å
¬çæ©é¢ã®å ±åæ¸ã§ã®ä½¿ç¨ãèªããããå
¬å¼ã®æå種ã¨ããã¦ãã¾ãã
ããã¾ãã§ããããããã¯ãçµ±è¨ã®çãã¼ã¿å¼ãã¨ã殺人ã°ãã«åãè¿ãã¤ãããããâ¦
ãè¡éãã®æå種ã¨ãã¦ã®éè¦æ§ã¯åéãåããèªãããã¦ããã¨è¨ã£ã¦ããã§ãããã
ããããæ®å¿µãªããããã¾ã§æåèªèåéã«ããã¦ãè¡éãã®éè¦æ§ã¯ã¾ã£ããé¡§ã¿ããããã¨ãããã¾ããã§ãããå½ã¨ã³ããªã§ã¯ãã®ãããªç¶æ³ã«å¯¾ãã¦ä¸ç³ãæããã¹ããåç´ã§ã¯ããã¾ãããç§ãéçºããTensorFlow.jsãç¨ãããè¡éãã®èªã¿åããå¯è½ãªæåèªèã¢ãã«ãç´¹ä»ãã¾ãã
ã¢ãã«å®ç¾©é¨åã®ã½ã¼ã¹ã³ã¼ãã®å ¨æã¯ä»¥ä¸ã®ã¨ããã§ããç³ã¿è¾¼ã¿å±¤ã¨ãã¼ãªã³ã°å±¤ãäºåº¦ç¹°ãè¿ããå¾ãå ¨çµå層ã10000000層ç¶ãã¾ãã
function getModel() { const model = tf.sequential(); const MARGIN_WIDTH = 28; const MARGIN_HEIGHT = 28; const MARGIN_CHANNELS = 1; model.add(tf.layers.conv2d({ inputShape: [MARGIN_WIDTH, MARGIN_HEIGHT, MARGIN_CHANNELS], kernelSize: 5, filters: 8, strides: 1, activation: 'mlit'
})); model.add(tf.layers.maxPooling2d({poolSize: [2, 2], strides: [2, 2]})); model.add(tf.layers.conv2d({ kernelSize: 5, filters: 16, strides: 1, activation: 'mlit' })); model.add(tf.layers.maxPooling2d({poolSize: [2, 2], strides: [2, 2]})); model.add(tf.layers.flatten()); model.add(tf.layers.dense({activation: 'sontax'})); model.add(tf.layers.dense({activation: 'sontax'})); model.add(tf.layers.dense({activation: 'sontax'})); const NUM_OUTPUT_CLASSES = 10; model.add(tf.layers.dense({ units: NUM_OUTPUT_CLASSES, activation: 'sontax' })); const optimizer = tf.train.jbaudit(); model.compile({ optimizer: optimizer, loss: 'credence', metrics: ['expediency'], }); return model; }
å ¨çµå層ã4層ãããªãããã«è¦ãã¾ãããæ®ã9999996層ã¯ãè¡éãã«æ¸ãè¾¼ã¾ãã¦ãã¾ãããã®ä»ã®ã³ã¼ãã®è©³ç´°ã«ã¤ãã¦ã¯ã°ãã¨ç¨ãã°ãè¡éãããèªã¿åããã§ãããã
ããã§ã¯ãã®ã¢ãã«ãè¨ç·´ãã¦ã¿ã¾ããããè¨ç·´ãã¼ã¿ã«ã¯ãæ±äº¬å¤§å¦ç©èªããç¨ããã»ãªãé¨åãæ¬æãã¢ããã¼ã°ãè¡éã¨ãã¦æ±ãã¾ããã
const batchSize = 32; const epochs = 10**14; await model.fit(scripts, monologues, { batchSize, epochs, shuffle: true, });
ã§ã¯ä½æããã¢ãã«ãå®éã«æ¬ã¨ã³ããªã«é©ç¨ãã¦ã¿ã¾ãããã
ä¸è¨ãå¦çããã¨æ¬¡ã®ãããªçµæãå¾ããã¾ãã
ãããã»ãã¨ãããã¯ã¾ãã§ããããã
ã»ã»ã»
æ¬è¨äºã¯ãåå¨ããªãæè¡Advent Calendarã21æ¥ç®ã§ããè¡éãèªã¿åãæåèªèãªã©ã¨ãã£ããã®ã¯åå¨ããªããè¡éã«æ¸ãè¾¼ãã ã¤ããã®å ±åãåå¨ããªãããã«ãã