Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù

ÐÔÄܳ¬¹ýÈËÀàÁ¶µ¤Ê¦£¬AutoGluon µÍµ÷¿ªÔ´

×Ô¶¯»úÆ÷ѧϰЧ¹ûÄÜÓжàºÃ£¿±ÈÈçÈà MobileNet1.0 backbone µÄ YOLO3 ³¬¹ý ResNet-50 backbone µÄ faster-rcnn Áù¸öµã£¿AutoGluon µÄÎÊÊÀ˵Ã÷£¬ÈËÀàÁ¶µ¤Ê¦¿ÉÄÜÔ½À´Ô½²»ÖØÒªÁË¡£

½üÈÕ£¬ÑÇÂíÑ·ÕýʽÍƳöÁË¿ªÔ´´úÂë¿â AutoGluon¡£¿ª·¢ÕßÒÀ¿¿½ö½ö¼¸ÐдúÂ룬¾Í¿ÉÒÔ±àд³ö AI ǶÈëÓ¦ÓóÌÐò¡£

Ò»¸ö¶àÔÂÇ°£¬AutoGluon ÔÚ GitHub ÒѾ­ÇÄÇÄÉÏÏߣ¬µ«×î½ü¼¸Ìì²ÅÕýʽ¹«¿ª·¢²¼¡£

¿ª·¢Õß¡¸Justin ho¡¹ÇÀÏÈÌåÑéÁËһϠAutoGluon£¬ÒÔÏÂÊÇËûµÄÐĵÃÌå»á£º

¡¸ResNet-50 backbone + FasterRCNN ÆïÁ³ÔõôÊäÂï¡£¡¹

µ«£¬×îÖÕ²âÊÔ¼¯³É¼¨·Ç³£³öÈËÒâÁÏ£¬AutoGluon ͨ¹ý NAS ËÑË÷µÄ½á¹ûÖ±½Ó¸ßÁËÁù¸öµã¡£

¶Ô´Ë£¬Àîãå±íʾ£º

ÖªºõÓû§ @Justin ho¡£

ÀîãåÔÚÖªºõÉÏ»ØÓ¦£º

AutoML ʹÓôó¸Å 15 ±¶ÓÚµ¥´ÎѵÁ·µÄ´ú¼Û£¬µÃµ½µÄ½á¹û¿ÉÄܱÈÊÖµ÷µÄÒªºÃ¡£Õâ¸öÖ÷ÒªÊǶÔÓÚ CV ¶øÑÔ£¬ÓÈÆäÊÇ detection Ä£ÐÍ£¬Ô¤¼Æ GluonCV ÀïÃæÄ£ÐͺܿìÓ®À´Ò»´ó²¨ÌáÉý¡£

AutoGluon È¡ÁËÒ»¸öÇÉ£¬ÎÒÃÇÄ¿Ç°Ö»Ö§³Ö GluonCV ºÍ GluonNLP ÀïÃæµÄÈÎÎñ£¬ºÍ¶îÍâµÄ Tabular Êý¾Ý£¨ÒòΪһ¸öС¸ç֮ǰÓйý¾­Ñ飩¡£ËùÒÔÎÒÃÇ¿ÉÒÔ°ÑÒÔÇ°µÄºÜÓо­Ñ鶫Î÷·Å½øÈ¥À´¼õСËѲοռ䣬´Ó¶øÌáÉýËٶȡ£

µ±È» AutoGluon »¹ÊÇÔçÆÚÏîÄ¿£¬ÎÒ±¾À´ÏëÊÇÈÃÍŶÓÔÙ¿ª·¢Ò»Ð©Ê±¼äÔÙ¹«¿ª¡£»¹ÓÐÌ«¶àÓÐÒâ˼µÄÓ¦Óá¢Ëã·¨¡¢Ó²¼þ¼ÓËÙ¿ÉÒÔ×öµÄ¡£·Ç³£»¶Ó­Ð¡»ï°éÄÜÒ»Æð¹±Ïס£

AutoGluon£ºÐÂÌØÐÔ

ͼ½â AutoGluon¡£

AutoGluon Ö§³ÖÒ×ʹÓúÍÒ×À©Õ¹µÄ AutoML£¬²¢×¨×¢ÓÚº­¸ÇͼÏñ¡¢Îı¾»ò±í¸ñÊý¾ÝµÄÉî¶ÈѧϰºÍʵ¼ÊÓ¦Óá£AutoGluon ÊÊÓÃÓÚ»úÆ÷ѧϰ³õѧÕߺÍר¼Ò£¬Äܹ»Ê¹ËûÃÇ£º

  • ͨ¹ý¼¸ÐдúÂë¼´¿É¿ìËÙµØΪÊý¾Ý¹¹½¨Éî¶ÈѧϰԭÐÍ·½°¸£»
  • ÀûÓÃ×Ô¶¯³¬²ÎÊý΢µ÷¡¢Ä£ÐÍÑ¡Ôñ/¼Ü¹¹ËÑË÷ºÍÊý¾Ý´¦Àí£»
  • ÎÞÐèר¼Ò֪ʶ¼´¿É×Ô¶¯Ê¹ÓÃÉî¶Èѧϰ SOTA ·½·¨£»
  • ÇáËɵØÌáÉýÏÖÓж¨ÖÆÄ£ÐͺÍÊý¾Ý¹ÜµÀ£¬»òÕ߸ù¾ÝÓÃÀý×Ô¶¨Òå AutoGluon¡£

Ö§³Ö¹¦ÄÜ

ÏÖÔÚ AutoGluon ÒѾ­Ö§³ÖÁËÒÔÏÂһЩӦÓãº

  • ±í¸ñÔ¤²â£º»ùÓÚÊý¾Ý±íÖÐһЩÁеÄÖµÔ¤²âÆäËûÁеÄÖµ£»
  • ͼÏñ·ÖÀࣺʶ±ðͼÏñÖеÄÖ÷Òª¶ÔÏó£»
  • ¶ÔÏó¼ì²â£º½èÖúͼÏñÖеı߽ç¿ò¼ì²â¶à¸ö¶ÔÏó£»
  • Îı¾·ÖÀࣺ»ùÓÚÎı¾ÄÚÈÝ×ö³öÔ¤²â¡£

³ýÁËÕâЩ֮Í⣬AutoGluon »¹¿ÉÒÔ½øÐÐÉñ¾­¼Ü¹¹ËÑË÷£¬Ê¹ÓÃÆðÀ´½ÏΪ¼ò±ã¡£

ÔõÑùʹÓà AutoGluon ÄØ£¿¹Ù·½ÎĵµÖÐÌṩÁËʾÀý´úÂ룬»úÆ÷Ö®ÐĽøÐÐÁ˽ÚÑ¡£º

ʾÀý´úÂë

±í¸ñÔ¤²â

¶ÔÓÚÓñí¸ñÐÎʽ£¨´æ´¢Îª CSV ÎļþµÈ£©À´±íʾµÄ±ê×¼Êý¾Ý¼¯À´Ëµ£¬AutoGluon ¿ÉÒÔ×Ô¶¯¸ù¾ÝÆäËûÁеÄÖµÀ´Ô¤²âijһÁÐÖµ¡£Ö»ÐèÒªµ÷ÓÃÒ»´Î fit()£¬¾Í¿ÉÒÔÔÚ±ê×¼µÄ¼à¶½Ñ§Ï°ÈÎÎñ£¨°üÀ¨·ÖÀàºÍ»Ø¹é£©ÖÐʵÏֺܸߵÄ׼ȷÐÔ£¬¶øÎÞÐèÊý¾ÝÇåÏ´¡¢ÌØÕ÷¹¤³Ì¡¢³¬²ÎÊýÓÅ»¯¡¢Ä£ÐÍÑ¡ÔñµÈµÈ·±ËöµÄÁ÷³Ì¡£

Ê×ÏÈ£¬µ¼Èë AutoGluon ÖÐÔ¤²â±í¸ñµÄÏà¹Ø api¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
import?autogluon?as?agfrom?autogluon?import?TabularPrediction?as?task?

¼ÓÔØÊý¾Ý£¨ÕâÀïʹÓùٷ½½Ì³ÌÌṩµÄÊý¾Ý¼¯£©¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
train_data?=?task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')train_data?=?train_data.head(500)?#?subsample?500?data?points?for?faster?demoprint(train_data.head())?

±í¸ñ train_data ÖеÄÿһÐж¼¶ÔÓ¦µ¥¶ÀµÄѵÁ·Ñù±¾¡£ÔÚ¹Ù·½½Ì³ÌÌṩµÄÊý¾Ý¼¯ÖУ¬Ã¿Ò»ÐжÔÓ¦µ¥¸öÈË£¬²¢ÇÒ±í¸ñÁаüº¬¸÷ÖÖͳ¼ÆÌØÕ÷¡£

ÎÒÃÇÏÈÀ´ÓÃÕâЩÌØÕ÷Ô¤²âÒ»ÏÂij¸öÈ˵ÄÊÕÈëÊÇ·ñ³¬¹ý 5 ÍòÃÀÔª£¬Ïà¹ØÐÅÏ¢¼Ç¼ÔڸñíµÄ class ÁÐÖС£

È»ºó½øÐÐѵÁ·£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
dir?=?'agModels-predictClass'?#?specifies?folder?where?to?store?trained?modelspredictor?=?task.fit(train_data=train_data,?label=label_column,?output_directory=dir)?

¼ÓÔزâÊÔ¼¯²¢²âÊÔ£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
test_data?=?task.Dataset(file_path='https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')y_test?=?test_data[label_column]?#?values?to?predicttest_data_nolab?=?test_data.drop(labels=[label_column],axis=1)?#?delete?label?column?to?prove?we're?not?cheatingprint(test_data_nolab.head())?

ͼÏñ·ÖÀà

ºÍ±í¸ñÔ¤²âÈÎÎñÀàËÆ£¬AutoGluon ¿ÉÒÔ×Ô¶¯¶ÔͼÏñ½øÐзÖÀ࣬²¢Ê¹Óà GPU ½øÐÐѵÁ·¡£

Ê×ÏȼÓÔØͼÏñ·ÖÀà api£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
import?autogluon?as?agfrom?autogluon?import?ImageClassification?as?task?

È»ºóÖ»ÐèÒª¶Ì¶Ì¼¸ÐдúÂë¾Í¿ÉÒÔ¹¹½¨Ò»¸öͼÏñ·ÖÀàÆ÷£¨Êý¾Ý¼¯Îª½Ì³Ì×Ô´øÊý¾Ý¼¯£©£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
classifier?=?task.fit(dataset,epochs=10,ngpus_per_trial=1,verbose=False)?

´òӡѵÁ·½á¹ûÖÐ×îºÃµÄ£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
print('Top-1?val?acc:?%.3f'?%?classifier.results['best_reward'])?

¶Ôµ¥Ò»Í¼Ïñ½øÐвâÊÔ£¬ÕâÀïµÄ ag.get_gpu_count() ÓÃÓÚ¼ì²âÊÇ·ñÓÐ GPU£¬ÈçÓÐÔò´óÓÚ 0¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
#?skip?this?if?training?FashionMNIST?on?CPU.if?ag.get_gpu_count()?>?0:?image?=?'data/test/BabyShirt/BabyShirt_323.jpg'?ind,?prob?=?classifier.predict(image)print('The?input?picture?is?classified?as?[%s],?with?probability?%.2f.'?%?(dataset.init().classes[ind.asscalar()],?prob.asscalar()))?

ÔÚ²âÊÔ¼¯ÉϲâÊÔ²¢´òÓ¡½á¹û£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
test_acc?=?classifier.evaluate(test_dataset)print('Top-1?test?acc:?%.3f'?%?test_acc)?

Éñ¾­¼Ü¹¹ËÑË÷

¶ÔÓÚ AutoML µÄ¿ò¼ÜÀ´Ëµ£¬Éñ¾­¼Ü¹¹ËÑË÷ÊǺÜÖØÒªµÄÒ»¸öÓ¦Ó᣽üÀ´£¬Á÷ÐÐµÄ NAS ·½·¨£¬Èç ENAS ºÍ ProxylessNAS ¶¼Í¨¹ý¹¹½¨Ò»¸ö³¬ÍøÂ磨supernet£©²¢ÔÚ²»Í¬µÄ¼Ü¹¹Ö®¼ä¹²ÏíȨÖØ£¬´Ó¶ø¼ÓËÙËÑË÷Ëٶȡ£

ProxylessNAS ¼Ü¹¹¡£

AutoGluon Ò²ÌṩÁËÏàÓ¦µÄ¹¦ÄÜ¡£

ÒÔ¡¸ÎªÓ²¼þÉ豸ËÑË÷ºÏÊʵÄÉñ¾­ÍøÂç¼Ü¹¹¡¹ÎªÀý£º

Ê×ÏÈ£¬µ¼ÈëÏà¹Ø api¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
import?autogluon?as?agimport?mxnet?as?mximport?mxnet.gluon.nn?as?nn?

È»ºóʹÓà MXNet ¿ò¼Ü¹¹½¨Ò»¸ö CNN µÄ»ù´¡¼Ü¹¹£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
class?Identity(mx.gluon.HybridBlock):?def?hybrid_forward(self,?F,?x):?return?xclass?ConvBNReLU(mx.gluon.HybridBlock):?def?__init__(self,?in_channels,?channels,?kernel,?stride):?super().__init__()?padding?=?(kernel?-?1)?//?2?self.conv?=?nn.Conv2D(channels,?kernel,?stride,?padding,?in_channels=in_channels)?self.bn?=?nn.BatchNorm(in_channels=channels)?self.relu?=?nn.Activation('relu')????def?hybrid_forward(self,?F,?x):????return?self.relu(self.bn(self.conv(x)))?

¹¹½¨Ò»¸ö ENAS µ¥ÔªÓÃÓڼܹ¹ËÑË÷£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
from?autogluon.contrib.enas?import?*??@enas_unit()class?ResUnit(mx.gluon.HybridBlock):?def?__init__(self,?in_channels,?channels,?hidden_channels,?kernel,?stride):?super().__init__()?self.conv1?=?ConvBNReLU(in_channels,?hidden_channels,?kernel,?stride)?self.conv2?=?ConvBNReLU(hidden_channels,?channels,?kernel,?1)?if?in_channels?==?channels?and?stride?==?1:?self.shortcut?=?Identity()???else:????self.shortcut?=?nn.Conv2D(channels,?1,?stride,?in_channels=in_channels)??????def?hybrid_forward(self,?F,?x):????return?self.conv2(self.conv1(x))?+?self.shortcut(x)?

ʹÓÃÐòÁдúÂë¿é£¨Sequential Block£©´´½¨ ENAS ÍøÂç¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
mynet?=?ENAS_Sequential(?ResUnit(1,?8,?hidden_channels=ag.space.Categorical(4,?8),?kernel=ag.space.Categorical(3,?5),?stride=2),?ResUnit(8,?8,?hidden_channels=8,?kernel=ag.space.Categorical(3,?5),?stride=2),?ResUnit(8,?16,?hidden_channels=8,?kernel=ag.space.Categorical(3,?5),?stride=2),?ResUnit(16,?16,?hidden_channels=8,?kernel=ag.space.Categorical(3,?5),?stride=1,?with_zero=True),?ResUnit(16,?16,?hidden_channels=8,?kernel=ag.space.Categorical(3,?5),?stride=1,?with_zero=True),?nn.GlobalAvgPool2D(),?nn.Flatten(),?nn.Activation('relu'),?nn.Dense(10,?in_units=16),)??mynet.initialize()#mynet.graph?

¶¨Òå½±Àøº¯Êý£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
reward_fn?=?*lambda*?metric,?net:?metric?*?((net.avg_latency?/?net.latency)?**?0.1)?

×îºó¿ªÊ¼ÑµÁ·¼´¿É£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
scheduler?=?ENAS_Scheduler(mynet,?train_set='mnist',reward_fn=reward_fn,?batch_size=128,?num_gpus=1,warmup_epochs=0,?epochs=1,?controller_lr=3e-3,plot_frequency=10,?update_arch_frequency=5)scheduler.run()?

AutoGluon ʹÓÃÔõôÑù

Ä¿Ç° AutoGluon ÍøÕ¾ÒѾ­ÓÐÖÚ¶à½Ì³ÌÁË£¬¿ª·¢ÕßÄÜÓÃËü¿ìËÙ´¦Àí¸÷Öֽṹ»¯Óë·Ç½á¹¹»¯Êý¾Ý¡£¶ÔÓÚ×ÊÉ·¢Õߣ¬AutoGluon »¹ÌṩÁËһϵÁж¨ÖÆ»¯µÄÖ¸ÄÏ£¬ÎÒÃÇÄÜѧ»áÈçºÎʹÓà AutoGluon µÄ API ×Ô¶¯ÌáÉýÔ¤²âÐÔÄÜ¡£

µ±È»£¬ÓÉÓÚ AutoGluon Ä¿Ç°ÈÔÔÚÍêÉÆÖУ¬ÓÐЩ¿ª·¢Õß±íʾ£¬Ä¿Ç° AutoGluon ÎĵµÖ÷Òª°üº¬Á˺ËÐÄÁ÷³Ì£¬»¹ÓÐһЩ¶îÍâµÄ¹¤¾ßûÓÐÏêϸ½éÉÜ¡£

ÔÚÖªºõÆÀÂÛÖУ¬ºÜ¶à¿ª·¢Õß±íʾ AutoGluon ÔÚÊÓ¾õÈÎÎñÉϵÄЧ¹ûºÜºÃ£¬ÉõÖÁÈç¹û²ÉÓà AutoGluon ×Ô´øµÄ YOLOV3£¨mobilenet1.0 backbone£©£¬ËüµÄЧ¹û»¹ÒªÓÅÓÚÊÖ¶¯µ÷²ÎµÄ FasterRCNN£¨resnet50 backbone£©¡£

ÕâÊǷdz£ÁîÈ˾ªÑȵģ¬±Ï¾¹ YOLOV3 ÊÇÒ»ÖÖµ¥½×¶ÎµÄ¼ì²âÆ÷£¬Ëü¸üÉó¤ÍÆÀíËٶȡ£¶ø FasterRCNN ÕâÖÖ¶þ½×¶Î¼ì²âÆ÷£¬ËäÈ»ÍÆÀíËÙ¶ÈûÄÇô¿ì£¬µ«Ð§¹ûÒ»°ãÒª¸üºÃ¡£¸ü²»ÓÃ˵ AutoGluon ²ÉÓõĹǸÉÍøÂçÖ»ÊÇ MobileNet 1.0£¬ËüµÄ±í´ïÄÜÁ¦Ô¶Ã»ÓÐ ResNet 50 Ç¿¡£×ÛºÏÕâÁ½ÖÖÒòËØ£¬AutoGluon ³¬¹ýÊÖ¶¯Ð§¹û£¬¾ÍÏԵ÷dz£ÁîÈ˾ªÑÈÁË¡£

֮ǰÀîãå¾ÍÔø±íʾ AutoGluon µÄʹÓôú¼Û²î²»¶àÊǵ¥´ÎѵÁ·µÄ 15 ±¶£¬ËùÒÔÔÚ 15 ´Î³¢ÊÔÖУ¬ÎÒÃÇ»¹Õæ²»Ò»¶¨ÄÜÕÒµ½³¬Ô½ AutoGluon µÄÕûÌ׳¬²Î¡£²»¹ýÒ²Óпª·¢ÕßÈÏΪҪÊÇÓÐÒ»¸ö±È½ÏºÃµÄËÑË÷¿Õ¼ä£¬Ëæ»úËÑË÷ 15 ´ÎÒ²ÄÜÕÒµ½±È½ÏºÃµÄ³¬²Î¡£Àîãå˵£º¡¸AutoGluon 15 ´Î Search µÄ½á¹û²î²»¶àÀàËÆÓÚ Random Search 30 ´Î£¬µ«Ç°ÌáÊÇ Search Space ¹¹ÔìµÄ±È½ÏºÃ£¬²»ÒªÌ«´óÓë̫С¡£¡¹

Ä¿Ç°ºÜ¶à¿ª·¢ÕßÓëÑо¿Õ߶¼ÒѾ­ÔÚ³¢ÊÔ AutoGluon µÄЧ¹û£¬ÓÐЩ¼òµ¥µ÷²Î¹¤×÷¼ÈÈ»»úÆ÷×öµÃ¸üºÃ£¬ÄÇôΪʲô²»½»¸øËüÃÇÄØ£¿Ëã·¨¹¤³Ìʦ¸Ã×öµÄ£¬Ó¦¸ÃÊÇÀí½âÒµÎñÓëÊý¾Ý£¬²¢×÷³öеĵ÷ÕûÓ봴С£

  • ·¢±íÓÚ:
  • Ô­ÎÄÁ´½Ó£ºhttp://news.51cto.com/art/202001/609287.htm
  • ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£

ɨÂë

Ìí¼ÓÕ¾³¤ ½ø½»Á÷Ⱥ

ÁìȡרÊô 10ÔªÎÞÃż÷ȯ

˽Ïí×îР¼¼Êõ¸É»õ

ɨÂë¼ÓÈ뿪·¢ÕßÉçȺ
Áìȯ
http://www.vxiaotou.com