±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚDL4JÍøÕ¾£¬±¾ÎĽ«Ïêϸ½éÉÜ»ùÓÚDeeplearning4jÉñ¾ÍøÂçѧϰµÄ¿ÉÊÓ»¯¡¢¼à²â¼°µ÷ÊÔ·½·¨,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
|
|
»ùÓÚDeeplearning4j¶¨ÐͽçÃæµÄÍøÂ綨ÐÍ¿ÉÊÓ»¯
×¢£ºÒÔÏÂ˵Ã÷ÊÊÓÃÓÚ0.7.0¼°ÒÔÉϵÄDL4J°æ±¾¡£
DL4JÌṩµÄÓû§½çÃæ¿ÉÒÔÔÚä¯ÀÀÆ÷ÖÐʵÏÖµ±Ç°ÍøÂç״̬ÒÔ¼°¶¨ÐͽøÕ¹µÄ£¨ÊµÊ±£©¿ÉÊÓ»¯¡£¸ÃÓû§½çÃæÍ¨³£ÓÃÓÚµ÷ÊÔÉñ¾ÍøÂ磬Ò༴ͨ¹ýÑ¡ÔñºÏÊʵij¬²ÎÊý£¨ÀýÈçѧϰËÙÂÊ£©À´Ìá¸ßÍøÂçÐÔÄÜ¡£
µÚ1²½£º½«Deeplearning4jÓû§½çÃæÒÀÀµÏîÌí¼ÓÖÁÄúµÄÏîÄ¿¡£
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-ui_2.10</artifactId>
<version>${dl4j.version}</version>
</dependency> |
Çë×¢Òâºó׺_2.10£ºÕâÊÇScalaµÄ°æ±¾£¨ÒòΪºó¶ËʹÓÃPlay¿ò¼ÜºÍÒ»¸öSacal¿â£©¡£Èç¹ûÄúûÓÐʹÓÃÆäËûµÄScala¿â£¬ÄÇô_2.10»òÕß_2.11¶¼¿ÉÒÔ¡£
µÚ2²½£ºÔÚÄúµÄÏîÄ¿ÖÐÆôÓÃÓû§½çÃæ
ÕâÒ»²½Ïà¶Ô±È½Ï¼òµ¥£º
//³õʼ»¯Óû§½çÃæºó¶Ë
UIServer uiServer = UIServer.getInstance();
//ÉèÖÃÍøÂçÐÅÏ¢£¨ËæÊ±¼ä±ä»¯µÄÌݶȡ¢·ÖÖµµÈ£©µÄ´æ´¢Î»Öá£ÕâÀォÆä´æ´¢ÓÚÄÚ´æ¡£
StatsStorage statsStorage = new InMemoryStatsStorage();
//»òÕߣº new FileStatsStorage(File)£¬ÓÃÓÚºóÐøµÄ±£´æºÍÔØÈë
//½«StatsStorageʵÀýÁ¬½ÓÖÁÓû§½çÃæ£¬ÈÃStatsStorageµÄÄÚÈÝÄܹ»±»¿ÉÊÓ»¯
uiServer.attach(statsStorage);
//È»ºóÌí¼ÓStatsListenerÀ´ÔÚÍøÂ綨ÐÍʱÊÕ¼¯ÕâЩÐÅÏ¢
net.setListeners(new StatsListener(statsStorage));
|
·ÃÎÊÓû§½çÃæµÄ·½Ê½ÊÇ´ò¿ªä¯ÀÀÆ÷²¢·ÃÎÊhttp://localhost:9000/train¡£ Äú¿ÉÒÔÓÃorg.deeplearning4j.ui.portϵͳÊôÐÔÀ´ÉèÖö˿ڣº±ÈÈ磬ÈôҪʹÓÃ9001¶Ë¿Ú£¬ÇëÔÚJVMÆô¶¯²ÎÊýÖÐÌí¼Ó£º-Dorg.deeplearning4j.ui.port=9001
Ëæºóµ±Äú¶ÔÍøÂçµ÷ÓÃfit·½·¨Ê±£¬Ïà¹ØÐÅÏ¢¾Í»á±»ÊÕ¼¯ÆðÀ´£¬´«Ë͸øÓû§½çÃæ¡£
ʾÀý£ºÓû§½çÃæÊ¾Àý¼û´Ë´¦
È«Ì×µÄÓû§½çÃæÊ¾Àý²Î¼û´Ë´¦¡£
Deeplearning4jÓû§½çÃæ£º×ÜÀÀÒ³Ãæ

×ÜÀÀÒ³Ãæ£¨Óû§½çÃæµÄ3¸öÒ³ÃæÖ®Ò»£©°üº¬ÒÔÏÂÐÅÏ¢£º
×óÉÏ·½£º·ÖÖµÓëµü´ú´ÎÊýµÄ¹ØÏµÍ¼£ÕâÊǵ±Ç°Î¢Åú´ÎµÄËðʧº¯ÊýµÄÖµ
ÓÒÉÏ·½£ºÄ£ÐͺͶ¨ÐÍÐÅÏ¢
×óÏ·½£ºËùÓÐÍøÂçÈ¨ÖØµÄ¸üÐÂÖµÓë²ÎÊýÖ®±È£¨¸÷²ã£©Í¬µü´ú´ÎÊýµÄ¹ØÏµ
ÓÒÏ·½£º¼¤»îº¯Êý¡¢ÌݶȺ͸üÐÂÖµµÄ±ê×¼²î£¨ËæÊ±¼ä±ä»¯Çé¿ö£©
×¢ÒâÏ·½Á½·ùͼÖÐÏÔʾµÄֵΪʵ¼ÊÖµµÄ³£ÓöÔÊý£¨µ×Ϊ10£©¡£Òò´Ë£¬Èç¹ûͼ±íÖиüÐÂÖµÓë²ÎÊýÖ®±ÈµÄֵΪ-3£¬Ôò¶ÔÓ¦µÄʵ¼Ê±ÈÀýΪ10-3
= 0.001¡£
¸üÐÂÖµÓë²ÎÊýÖ®±ÈÔÚ´Ë´¦Ö¸¸üÐÂÖµÓë²ÎÊýµÄƽ¾ùÖµÖ®±È¡£
ÕâЩÊýÖµÔÚʵ¼ùÖеÄʹÓ÷½Ê½²Î¼ûºóÃæµÄ¶ÎÂä¡£
Deeplearning4jÓû§½çÃæ£ºÄ£ÐÍÒ³Ãæ

Ä£ÐÍÒ³Ãæ°üº¬Ò»·ùÉñ¾ÍøÂçµÄ²ã´Îͼ£¬Æðµ½Ñ¡Ôñ»úÖÆµÄ×÷Óᣵã»÷ÆäÖеÄÈÎÒâÒ»²ã£¬¼´»áÏÔʾ¸Ã²ãµÄÐÅÏ¢¡£
Ñ¡ÔñÁËijһ²ãÖ®ºó£¬Ò³ÃæÓÒ²à¿ÉÏÔʾÒÔÏÂͼ±í£º
1.¸Ã²ãµÄÐÅÏ¢±í
2.¸Ã²ãµÄ¸üÐÂÖµÓë²ÎÊýÖ®±È£¬Èç×ÜÀÀÒ³ÃæÖÐËùʾ¡£µã»÷Ñ¡Ï¼´¿É·Ö±ðÏÔʾÕâÒ»±ÈÀýµÄÁ½¸öÏ¸üÐÂÖµºÍ²ÎÊý¸÷×ÔµÄÆ½¾ùÖµ£©µÄÇé¿ö¡£
3.¸Ã²ãÖеļ¤»îº¯Êý£¨Æ½¾ùÖµ¼°Æ½¾ùÖµ+/-2¸ö±ê×¼²î·¶Î§£©ËæÊ±¼ä±ä»¯µÄÇé¿ö
4.¸÷Àà²ÎÊý¼°¸üÐÂÖµµÄÖù״ͼ
ѧϰËÙÂÊÓëʱ¼äµÄ¹ØÏµ£¨½öÔÚʹÓÃѧϰËÙÂʼƻ®Ê±²Å»áÓб仯£©
×¢Ò⣺²ÎÊý±ê¼Ç·½Ê½ÈçÏ£ºÈ¨ÖØ£¨W£©£¬Æ«²î£¨b£©¡£ÔÚÑ»·Éñ¾ÍøÂçÖУ¬WÖ¸½«¸Ã²ãÓëÏÂÒ»²ãÁ¬½ÓµÄÈ¨ÖØ£¬¶øRWָѻ·È¨ÖØ£¨¼´Ê±¼ä²½Ö®¼äµÄÈ¨ÖØ£©¡£
Deeplearning4JÓû§½çÃæÓëSpark¶¨ÐÍ
DL4JÓû§½çÃæ¿ÉÒÔÅäºÏSparkʹÓᣵ«ÊÇ£¬½ØÖ¹µ½0.7.0°æ£¬ÓÉÓÚÒÀÀµÏîµÄ³åÍ»£¬ÔÚͬ¸öJVMÖÐͬʱÔËÐÐÓû§½çÃæºÍSpark¿ÉÄÜ»á±È½ÏÀ§ÄÑ¡£
ÓÐÁ½ÖÖÌæ´ú·½·¨£º
ÊÕ¼¯²¢±£´æÏà¹ØÍ³¼ÆÊý¾Ý£¬ËæºóÔÙ½øÐУ¨ÏßÏ£©¿ÉÊÓ»¯
ÔÚÁíÒ»¸ö·þÎñÆ÷ÖÐÔËÐÐÓû§½çÃæ£¬È»ºóÓÃÔ¶³ÌÓû§½çÃæ¹¦Äܽ«Êý¾Ý´ÓSparkÖ÷½ÚµãÉÏ´«ÖÁÓû§½çÃæÊµÀý
ÊÕ¼¯Êý¾ÝÒÔ¹©ÏßÏÂʹÓÃ
SparkDl4jMultiLayer
sparkNet = new SparkDl4jMultiLayer(sc, conf, tm);
StatsStorage ss = new FileStatsStorage(new File("myNetworkTrainingStats.dl4j"));
sparkNet.setListeners(ss, Collections.singletonList(new
StatsListener(null))); |
Ö®ºó¿ÉÒÔÓÃÈçÏ´úÂë¼ÓÔØ²¢ÏÔʾÒѱ£´æµÄÐÅÏ¢£º
StatsStorage
statsStorage = new FileStatsStorage(statsFile);
//Èç¹ûÎļþÒÑ´æÔÚ£º´ÓÆäÖмÓÔØÊý¾Ý
UIServer uiServer = UIServer.getInstance();
uiServer.attach(statsStorage); |
ʹÓÃÔ¶³ÌÓû§½çÃæ¹¦ÄÜ
Ê×ÏÈÔÚJVMÖÐÔËÐÐÓû§½çÃæ£º
UIServer uiServer
= UIServer.getInstance();
uiServer.enableRemoteListener(); //±ØÒª²Ù×÷£ºÄ¬ÈÏÇé¿öϲ»ÆôÓÃÔ¶³ÌÖ§³Ö
|
ÕâÒ»²½ÐèÒªdeeplearning4j-ui_2.10»òdeeplearning4j-ui_2.11ÒÀÀµÏî¡£Æä´Î£¬ÔÚSpark¶¨ÐÍʵÀýÖУº
SparkDl4jMultiLayer
sparkNet = new SparkDl4jMultiLayer(sc, conf, tm);
StatsStorageRouter remoteUIRouter = new RemoteUIStatsStorageRouter("http://UI_MACHINE_IP:9000");
sparkNet.setListeners(remoteUIRouter, Collections.singletonList(new
StatsListener(null))); |
Ϊ±ÜÃâÓëSpark·¢ÉúÒÀÀµÏî³åÍ»£¬Ó¦µ±Ê¹ÓÃdeeplearning4j-ui-modelÒÀÀµÏîÀ´»ñÈ¡StatsListener£¬¶ø²»ÊÇÍêÕûµÄdeeplearning4j-ui_2.10Óû§½çÃæÒÀÀµÏî¡£
×¢Ò⣺ÄúÓ¦µ±½«UI_MACHINE_IPÌæ»»ÎªÔËÐÐÓû§½çÃæÊµÀýµÄ¼ÆËã»úµÄIPµØÖ·¡£
ÓÃUIµ÷ÊÔÍøÂç
Andrej KarpathyµÄÕâ¸öÍøÒ³¶ÔÉñ¾ÍøÂ綨Ð͵ĿÉÊÓ»¯×÷Á˺Ü͸³¹µÄ½éÉÜ£¬ÖµµÃÒ»¶Á£¬²»·ÁÏȽ«ÆäÖеÄÄÚÈÝÏû»¯Ò»Ï¡£
Éñ¾ÍøÂçµÄµ÷ÊÔ¿ÉÄܸüÏñÊÇÒ»Ãż¼ÒÕ£¬¶ø·Ç¿ÆÑ§¡£µ«ÒÔϵÄһЩ˼·¿ÉÄÜ»áÓÐËù°ïÖú£º
×ÜÀÀÒ³Ãæ£Ä£ÐÍ·ÖÖµÓëµü´ú´ÎÊýµÄ¹ØÏµÍ¼
Ëæ×ŵü´ú´ÎÊýµÄÔö¼Ó£¬£¨ÕûÌ壩·ÖÖµÓ¦µ±Öð½¥Ï½µ¡£
1.Èç¹û·ÖÖµ³ÖÐøÉÏÉý£¬ÄÇôÓпÉÄÜÊÇѧϰËÙÂÊÉèÖùý¸ß¡£³¢ÊÔ½µµÍѧϰËÙÂÊ£¬Ö±ÖÁ·ÖÖµ±äµÃ¸üÎȶ¨¡£
2.·ÖÖµ³ÖÐøÉÏÉýÒ²ÓпÉÄÜÊÇÆäËûÍøÂçÎÊÌâÔì³ÉµÄ£¬ÀýÈçÊý¾Ý±ê×¼»¯²»µ±
3.Èç¹û·ÖÖµ±£³Ö²»±ä£¬»òÕßϽµËÙ¶ÈÊ®·Ö»ºÂý£¨ÐèÒª¾¹ý¼¸°Ù´Îµü´ú£©£¬ÄÇô£¨a£©Ñ§Ï°ËÙÂÊÓпÉÄÜÌ«µÍ£¬»òÕߣ¨b£©ÓÅ»¯¿ÉÄÜÓöµ½ÁËÀ§ÄÑ¡£ÔÚºóÒ»ÖÖÇé¿öÏ£¬Èç¹ûÄúʹÓõÄÊÇSGD¸üÐÂÆ÷£¬¿ÉÒÔÊÔ׎«Æä»»³É
Nesterov£¨¶¯Á¿£©¡¢RMSProp»òAdagrad¸üÐÂÆ÷¡£
4.×¢Ò⣺δ¾Ëæ»ú»¯µÄÊý¾Ý£¨¼´Ã¿¸ö΢Åú´ÎÖ»ÓÐÒ»¸ö·ÖÀàÀà±ð£©¿ÉÄܻᵼÖ·ÖÖµÓëµü´ú´ÎÊý¹ØÏµÍ¼³öÏֺܴ󲨶¯»òÒì³£ÐÎ̬
5.Õâ·ùͼÖгöÏÖһЩÔëÉùÊÇÕý³£µÄ£¨¼´ÇúÏß»áС·¶Î§ÉÏϲ¨¶¯£©¡£µ«ÊÇ£¬Èç¹û²»Í¬µü´úÖ®¼äµÄ·ÖÖµ²îÒìºÜ´ó£¬¾Í¿ÉÄÜ´æÔÚÎÊÌâ
6.Ôì³ÉÕâÖÖÏÖÏóµÄÔÒò¿ÉÄܰüÀ¨ÉÏÊö¸÷ÀàÎÊÌ⣨ѧϰËÙÂÊ¡¢±ê×¼»¯¡¢Êý¾ÝËæ»ú»¯£©¡£
7.ÿ¸ö΢Åú´ÎÖеÄÑùÀýÊýÁ¿Ì«ÉÙÒ²ÓпÉÄÜÔì³ÉͼÖгöÏֽϴóÔëÉù£¬Í¬Ê±ÓпÉÄܻᵼÖÂÓÅ»¯À§ÄÑ
×ÜÀÀÒ³ÃæºÍÄ£ÐÍÒ³Ãæ£¸üÐÂÖµÓë²ÎÊý±ÈÀýͼµÄʹÓÃ
1.×ÜÀÀÒ³ÃæºÍÄ£ÐÍÒ³ÃæÉ϶¼»áÏÔʾ¸üÐÂÖµÓë²ÎÊýµÄƽ¾ùÖµÖ®±È
´Ë´¦µÄ¡°Æ½¾ùÖµ¡± = µ±Ç°Ê±¼ä²½Ï²ÎÊý»ò¸üÐÂÖµµÄ¾ø¶ÔÖµµÄƽ¾ùÊý
2.¸Ã±ÈÀý×îÖØÒªµÄÓÃ;ÊǰïÖúÉ趨ѧϰËÙÂÊ¡£Ò»°ãµÄ¹æÔòÊÇ£º¸Ã±ÈÀýÓ¦µ±ÔÚ1:1000
= 0.001×óÓÒ£¬ÔÚ£¨log10£©Í¼ÖÐΪ-3£¨¼´10-3 = 0.001£©
×¢ÒâÕâÖ»ÊÇ´ó¸ÅµÄÔÔò£¬²»Ò»¶¨ÊÊÓÃÓÚËùÓеÄÉñ¾ÍøÂ磬²»¹ýͨ³£¿ÉÒÔÒÔ´ËΪÆðµã¿ªÊ¼³¢ÊÔ¡£
Èç¹ûʵ¼Ê±ÈÀýÓë´ËÏà²îºÜ¶à£¨±ÈÈç > -2£¬¼´10-2=0.01£¬»òÕß < -4£¬¼´10-4=0.0001£©£¬ÄÇô²ÎÊý¿ÉÄÜÌ«²»Îȶ¨»òÕ߱仯̫Âý£¬ÍøÂçÎÞ·¨Ñ§»áʶ±ðÓÐÓõÄÌØÕ÷
¸Ä±äÕâÒ»±ÈÀýµÄ·½Ê½Êǵ÷ÕûѧϰËÙÂÊ£¨ÓÐʱҲ¿ÉÒÔµ÷Õû²ÎÊý³õʼ»¯£©¡£¶ÔÄ³Ð©ÍøÂç¶øÑÔ£¬ÓпÉÄÜÐèҪΪ²»Í¬µÄ²ãÉèÖò»Í¬µÄѧϰËÙÂÊ¡£
3.×¢Òâ±ÈÀýÊÇ·ñ³öÏÖÒì³£µÄ´ó·ùÉÏÉý£ºÕâ¿ÉÄܱíÃ÷·¢ÉúÁËÌݶÈÅòÕÍ
Ä£ÐÍÒ³Ãæ£º²ãÖм¤»îº¯Êý£¨Óëʱ¼äµÄ¹ØÏµ£©Í¼
¸Ãͼ¿ÉÓÃÓÚ¼ì²â¼¤»îº¯ÊýÏûʧ»òÅòÕÍ£¨¿ÉÄÜÓÉÈ¨ÖØ³õʼ»¯²»µ±¡¢ÕýÔò»¯¹ý¶È¡¢Êý¾Ý±ê×¼»¯²»×ã»òѧϰËÙÂʹý¸ßµ¼Ö£©¡£
1.ÀíÏë״̬Ï£¬Ëæ×Åʱ¼äÍÆÒÆ£¬Í¼ÏñÓ¦µ±Ç÷ÓÚÎȶ¨£¨Í¨³£ÐèÒªÊý°Ù´Îµü´ú£©
2.½ÏÀíÏëµÄ¼¤»îº¯Êý±ê×¼²îΪ0.5ÖÁ2.0×óÓÒ¡£Èç¹û±ê×¼²î´ó·ù³¬³öÕâÒ»·¶Î§£¬±íÃ÷ÓпÉÄܳöÏÖÁËÉÏÊö¼¸ÖÖÎÊÌâÖ®Ò»¡£
Ä£ÐÍÒ³Ãæ£º²ãÖвÎÊýµÄÖù״ͼ
²ãÖвÎÊýµÄÖù״ͼ½öÏÔʾ×î½üÒ»´Îµü´úµÄÇé¿ö¡£
1.¾¹ýÒ»¶¨Ê±¼äÖ®ºó£¬È¨ÖصÄÖù״ͼӦ´óÖ³ÊÏÖ³ö¸ß˹£¨Õý̬£©·Ö²¼
2.Æ«²îµÄÖù״ͼһ°ã´Ó0¿ªÊ¼£¬×îÖÕͨ³£»á´óÖ³ʸß˹£¨Õý̬£©·Ö²¼
LSTMÑ»·ÍøÂçµÄ²ãÊÇÌØÊâÇé¿ö£ºÔÚĬÈÏ״̬Ï£¬Ò»¸öÃÅ£¨ÒÅÍüÃÅ£©µÄÆ«²îÉèÖÃΪ1.0£¬ÒÔ°ïÖúÍøÂçѧϰ¿çÔ½½Ï³¤Ê±¼ä¶ÎµÄÒÀÀµ¹ØÏµ¡£Òò´Ë£¬Æ«²îͼÖÐ×î³õ»áÓÐÐí¶àÆ«²îλÓÚ0.0¸½½ü£¬¶øÁíÒ»×鯫²îÔò»áÔÚ1.0¸½½ü
3.×¢ÒâÊÇ·ñÓвÎÊýÆ«ÀëÕý³£·¶Î§²¢Ç÷ÏòÓÚÕý/¸ºÎÞÇÆäÔÒò¿ÉÄÜÊÇѧϰËÙÂʹý¸ß»òÕßÕýÔò»¯²»×㣨¿ÉÒÔÊÔ×ÅÎªÍøÂçÌí¼ÓһЩL2ÕýÔò»¯²½Ö裩¡£
4.×¢ÒâÊÇ·ñÓÐÆ«²î±äµÃ·Ç³£´ó¡£Èç¹ûÀà±ðµÄ·Ö²¼¼«¶È²»Æ½ºâ£¬·ÖÀàÊä³ö²ãÓÐʱ»á³öÏÖÕâÖÖÇé¿ö
Ä£ÐÍÒ³Ãæ£º²ãÖиüÐÂÖµµÄÖù״ͼ
²ãÖиüÐÂÖµµÄÖù״ͼ½öÏÔʾ×î½üÒ»´Îµü´úµÄÇé¿ö¡£
×¢ÒâͼÖÐÏÔʾµÄÊǸüÐÂÖµ£¬Ò²¾ÍÊÇÓ¦ÓÃÁËѧϰËÙÂÊ¡¢¶¯Á¿¡¢ÕýÔò»¯µÈÖ®ºóµÄÌݶÈ
Óë²ÎÊýͼÏàÀàËÆ£¬¸üÐÂÖµµÄÖù״ͼҲӦµ±´óÖ³ÊÏÖ³ö¸ß˹£¨Õý̬£©·Ö²¼
×¢ÒâÊÇ·ñ³öÏÖÌØ±ð´óµÄ¸üÐÂÖµ£ºÓпÉÄܱíÃ÷ÍøÂçÖÐÓÐÅòÕ͵ÄÌݶÈ
ÌݶÈÅòÕÍÊÇÒ»ÖÖÎÊÌ⣬ÓпÉÄܻᵼÖÂÍøÂç²ÎÊý±äµÃ¡°»ìÂÒ¡±
¸ÃÇé¿öÏÂÓпÉÄÜÊÇÈ¨ÖØ³õʼ»¯¡¢Ñ§Ï°ËÙÂÊ»òÊäÈë/±êÇ©Êý¾Ý±ê×¼»¯µÄÎÊÌâËùÖÂ
¶ÔÑ»·Éñ¾ÍøÂç¶øÑÔ£¬Ìí¼ÓһЩÌݶȱê×¼»¯»òÌݶȲüôµÄ²½Öè¿ÉÄÜ»áÓаïÖú
Ä£ÐÍÒ³Ãæ£º²ÎÊýѧϰËÙÂÊͼ
¸ÃͼÏÔʾµÄ¾ÍÊÇËùÑ¡²ãµÄ²ÎÊýµÄѧϰËÙÂÊËæÊ±¼ä±ä»¯µÄÇé¿ö
Èç¹ûÄúûÓÐʹÓÃѧϰËÙÂʼƻ®£¨learning rate schedule£©£¬Í¼Ïñ½«ÊÇˮƽֱÏß¡£Èç¹ûʹÓÃÁËѧϰËÙÂʼƻ®£¬¾Í¿ÉÒÔÓÃÕâÕÅͼÀ´¸ú×Ùµ±Ç°µÄѧϰËÙÂÊ£¨¶ÔÓÚÿ¸ö²ÎÊý¶øÑÔ£©¼°ÆäËæÊ±¼ä±ä»¯µÄÇé¿ö¡£
TSNEÓëWord2vec
ÎÒÃÇÒÀ¿¿TSNEÀ´½µµÍ´ÊÌØÕ÷ÏòÁ¿µÄά¶È£¬½«´ÊÏòÁ¿Í¶Ó°ÖÁ¶þά»òÈýάµÄ¿Õ¼ä¡£ÒÔÏÂÊÇÔÚWord2VecÍøÂçÖÐʹÓÃTSNEµÄ´úÂ룺
log.info("Plot
TSNE....");
BarnesHutTsne tsne = new BarnesHutTsne.Builder()
.setMaxIter(1000)
.stopLyingIteration(250)
.learningRate(500)
.useAdaGrad(false)
.theta(0.5)
.setMomentum(0.5)
.normalize(true)
.usePca(false)
.build();
vec.lookupTable().plotVocab(tsne); |
|