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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éî¶Èѧϰ£ºKerasÈëÃÅ(Ò»)Ö®»ù´¡Æª
 
×÷Õߣºlc19861217
  54991  次浏览      27
 2020-11-4  
 
±à¼­ÍƼö:
±¾ÎÄÊ×ÏȽéÉÜKeras»ù´¡¡¢KerasµÄÄ£¿é½á¹¹¡¢Ê¹ÓÃKeras´î½¨Ò»¸öÉñ¾­ÍøÂç¡¢Ö÷Òª¸ÅÄîµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

1.¹ØÓÚKeras

1£©¼ò½é

KerasÊÇÓÉ´¿python±àдµÄ»ùÓÚtheano/tensorflowµÄÉî¶Èѧϰ¿ò¼Ü¡£

KerasÊÇÒ»¸ö¸ß²ãÉñ¾­ÍøÂçAPI£¬Ö§³Ö¿ìËÙʵÑ飬Äܹ»°ÑÄãµÄideaѸËÙת»»Îª½á¹û£¬Èç¹ûÓÐÈçÏÂÐèÇ󣬿ÉÒÔÓÅÏÈÑ¡ÔñKeras£º

a£©¼òÒ׺ͿìËÙµÄÔ­ÐÍÉè¼Æ£¨keras¾ßÓи߶ÈÄ£¿é»¯£¬¼«¼ò£¬ºÍ¿ÉÀ©³äÌØÐÔ£©

b£©Ö§³ÖCNNºÍRNN£¬»ò¶þÕߵĽáºÏ

c£©ÎÞ·ìCPUºÍGPUÇл»

2£©Éè¼ÆÔ­Ôò

a£©Óû§ÓѺãºKerasÊÇΪÈËÀà¶ø²»ÊÇÌì¶¥ÐÇÈËÉè¼ÆµÄAPI¡£Óû§µÄʹÓÃÌåÑéʼÖÕÊÇÎÒÃÇ¿¼ÂǵÄÊ×ÒªºÍÖÐÐÄÄÚÈÝ¡£Keras×ñÑ­¼õÉÙÈÏÖªÀ§ÄѵÄ×î¼Ñʵ¼ù£ºKerasÌṩһÖ¶ø¼ò½àµÄAPI£¬ Äܹ»¼«´ó¼õÉÙÒ»°ãÓ¦ÓÃÏÂÓû§µÄ¹¤×÷Á¿£¬Í¬Ê±£¬KerasÌṩÇåÎúºÍ¾ßÓÐʵ¼ùÒâÒåµÄbug·´À¡¡£

b£©Ä£¿éÐÔ£ºÄ£ÐÍ¿ÉÀí½âΪһ¸ö²ãµÄÐòÁлòÊý¾ÝµÄÔËËãͼ£¬ÍêÈ«¿ÉÅäÖõÄÄ£¿é¿ÉÒÔÓÃ×îÉٵĴú¼Û×ÔÓÉ×éºÏÔÚÒ»Æð¡£¾ßÌå¶øÑÔ£¬ÍøÂç²ã¡¢Ëðʧº¯Êý¡¢ÓÅ»¯Æ÷¡¢³õʼ»¯²ßÂÔ¡¢¼¤»îº¯Êý¡¢ÕýÔò»¯·½·¨¶¼ÊǶÀÁ¢µÄÄ£¿é£¬Äã¿ÉÒÔʹÓÃËüÃÇÀ´¹¹½¨×Ô¼ºµÄÄ£ÐÍ¡£

c£©Ò×À©Õ¹ÐÔ£ºÌí¼ÓÐÂÄ£¿é³¬¼¶ÈÝÒ×£¬Ö»ÐèÒª·ÂÕÕÏÖÓеÄÄ£¿é±àдеÄÀà»òº¯Êý¼´¿É¡£´´½¨ÐÂÄ£¿éµÄ±ãÀûÐÔʹµÃKeras¸üÊʺÏÓÚÏȽøµÄÑо¿¹¤×÷¡£

d£©ÓëPythonЭ×÷£ºKerasûÓе¥¶ÀµÄÄ£ÐÍÅäÖÃÎļþÀàÐÍ£¨×÷Ϊ¶Ô±È£¬caffeÓУ©£¬Ä£ÐÍÓÉpython´úÂëÃèÊö£¬Ê¹Æä¸ü½ô´ÕºÍ¸üÒ×debug£¬²¢ÌṩÁËÀ©Õ¹µÄ±ãÀûÐÔ¡£

2.KerasµÄÄ£¿é½á¹¹

3.ʹÓÃKeras´î½¨Ò»¸öÉñ¾­ÍøÂç

4.Ö÷Òª¸ÅÄî

1£©·ûºÅ¼ÆËã

KerasµÄµ×²ã¿âʹÓÃTheano»òTensorFlow£¬ÕâÁ½¸ö¿âÒ²³ÆÎªKerasµÄºó¶Ë¡£ÎÞÂÛÊÇTheano»¹ÊÇTensorFlow£¬¶¼ÊÇÒ»¸ö¡°·ûºÅʽ¡±µÄ¿â¡£·ûºÅ¼ÆËãÊ×Ïȶ¨Òå¸÷ÖÖ±äÁ¿£¬È»ºó½¨Á¢Ò»¸ö¡°¼ÆËãͼ¡±,¼ÆËãͼ¹æ¶¨Á˸÷¸ö±äÁ¿Ö®¼äµÄ¼ÆËã¹ØÏµ¡£

·ûºÅ¼ÆËãÒ²½ÐÊý¾ÝÁ÷ͼ£¬Æä¹ý³ÌÈçÏÂ(gifͼ²»ºÃ´ò¿ª£¬ËùÒÔÓÃÁ˾²Ì¬Í¼£¬Êý¾ÝÊǰ´Í¼ÖкÚÉ«´ø¼ýÍ·µÄÏßÁ÷¶¯µÄ)£º

2£©ÕÅÁ¿

ÕÅÁ¿(tensor)£¬¿ÉÒÔ¿´×÷ÊÇÏòÁ¿¡¢¾ØÕóµÄ×ÔÈ»ÍÆ¹ã£¬ÓÃÀ´±íʾ¹ã·ºµÄÊý¾ÝÀàÐÍ¡£ÕÅÁ¿µÄ½×ÊýÒ²½Ðά¶È¡£

0½×ÕÅÁ¿,¼´±êÁ¿,ÊÇÒ»¸öÊý¡£

1½×ÕÅÁ¿,¼´ÏòÁ¿,Ò»×éÓÐÐòÅÅÁеÄÊý

2½×ÕÅÁ¿,¼´¾ØÕó,Ò»×éÏòÁ¿ÓÐÐòµÄÅÅÁÐÆðÀ´

3½×ÕÅÁ¿£¬¼´Á¢·½Ì壬һ×龨ÕóÉÏÏÂÅÅÁÐÆðÀ´

4½×ÕÅÁ¿......

ÒÀ´ÎÀàÍÆ

ÖØµã£º¹ØÓÚά¶ÈµÄÀí½â

¼ÙÈçÓÐÒ»¸ö10³¤¶ÈµÄÁÐ±í£¬ÄÇôÎÒÃǺáÏò¿´ÓÐ10¸öÊý×Ö£¬Ò²¿ÉÒÔ½Ð×ö10ά¶È£¬×ÝÏò¿´Ö»ÄÜ¿´µ½1¸öÊý×Ö£¬ÄÇô¾Í½Ð1ά¶È¡£×¢ÒâÕâ¸öÇø±ðÓÐÖúÓÚÀí½âKeras»òÕßÉñ¾­ÍøÂçÖмÆËãʱ³öÏÖµÄά¶ÈÎÊÌâ¡£

3£©Êý¾Ý¸ñʽ(data_format)

ĿǰÖ÷ÒªÓÐÁ½ÖÖ·½Ê½À´±íʾÕÅÁ¿£º

a) thģʽ»òchannels_firstģʽ£¬TheanoºÍcaffeʹÓôËģʽ¡£

b£©tfģʽ»òchannels_lastģʽ£¬TensorFlowʹÓôËģʽ¡£

ÏÂÃæ¾ÙÀý˵Ã÷Á½ÖÖģʽµÄÇø±ð£º

¶ÔÓÚ100ÕÅRGB3ͨµÀµÄ16¡Á32£¨¸ßΪ16¿íΪ32£©²Êɫͼ£¬

th±íʾ·½Ê½£º£¨100,3,16,32£©

tf±íʾ·½Ê½£º£¨100,16,32,3£©

ΨһµÄÇø±ð¾ÍÊDZíʾͨµÀ¸öÊý3µÄλÖò»Ò»Ñù¡£

4£©Ä£ÐÍ

KerasÓÐÁ½ÖÖÀàÐ͵ÄÄ£ÐÍ£¬Ðò¹áÄ£ÐÍ£¨Sequential£©ºÍº¯ÊýʽģÐÍ£¨Model£©£¬º¯ÊýʽģÐÍÓ¦ÓøüΪ¹ã·º£¬Ðò¹áÄ£ÐÍÊǺ¯ÊýʽģÐ͵ÄÒ»ÖÖÌØÊâÇé¿ö¡£

a£©Ðò¹áÄ£ÐÍ£¨Sequential):µ¥ÊäÈëµ¥Êä³ö£¬Ò»Ìõ·ͨµ½µ×£¬²ãÓë²ãÖ®¼äÖ»ÓÐÏàÁÚ¹ØÏµ£¬Ã»Óпç²ãÁ¬½Ó¡£ÕâÖÖÄ£ÐͱàÒëËٶȿ죬²Ù×÷Ò²±È½Ï¼òµ¥

b£©º¯ÊýʽģÐÍ£¨Model£©£º¶àÊäÈë¶àÊä³ö£¬²ãÓë²ãÖ®¼äÈÎÒâÁ¬½Ó¡£ÕâÖÖÄ£ÐͱàÒëËÙ¶ÈÂý¡£

5.µÚÒ»¸öʾÀý

ÕâÀïÒ²²ÉÓýéÉÜÉñ¾­ÍøÂçʱ³£ÓõÄÒ»¸öÀý×Ó£ºÊÖдÊý×ÖµÄʶ±ð¡£

ÔÚд´úÂë֮ǰ£¬»ùÓÚÕâ¸öÀý×Ó½éÉÜһЩ¸ÅÄ·½±ã´ó¼ÒÀí½â¡£

PS£º¿ÉÄÜÊǰ汾²îÒìµÄÎÊÌ⣬¹ÙÍøÖеIJÎÊýºÍʾÀýÖеIJÎÊýÊDz»Ò»ÑùµÄ£¬¹ÙÍøÖиø³öµÄ²ÎÊýÉÙ£¬²¢ÇÒÓÐЩ²ÎÊýÖ§³Ö£¬ÓÐЩ²»Ö§³Ö¡£ËùÒÔ´ËÀý×ÓÈ¥µôÁ˲»Ö§³ÖµÄ²ÎÊý£¬²¢ÇÒÖ»½éÉܱ¾ÀýÖÐÓõ½µÄ²ÎÊý¡£

1£©Dense(500,input_shape=(784,))

a£©Dense²ãÊôÓÚÍøÂç²ã-->³£ÓòãÖеÄÒ»¸ö²ã

b£© 500±íʾÊä³öµÄά¶È£¬ÍêÕûµÄÊä³ö±íʾ£º(*,500)£º¼´Êä³öÈÎÒâ¸ö500άµÄÊý¾ÝÁ÷¡£µ«ÊÇÔÚ²ÎÊýÖÐֻдά¶È¾Í¿ÉÒÔÁË£¬±È½Ï¾ßÌåÊä³ö¶àÉÙ¸öÊÇÓÐÊäÈëÈ·¶¨µÄ¡£»»¸ö˵·¨£¬DenseµÄÊä³öÆäʵÊǸöN¡Á500µÄ¾ØÕó¡£

c£©input_shape(784,) ±íʾÊäÈëά¶ÈÊÇ784(28¡Á28£¬ºóÃæ¾ßÌå½éÉÜΪʲô)£¬ÍêÕûµÄÊäÈë±íʾ£º(*,784)£º¼´ÊäÈëN¸ö784ά¶ÈµÄÊý¾Ý

2£©Activation('tanh')

a£©Activation£º¼¤»î²ã

b£©'tanh' £º¼¤»îº¯Êý

3£©Dropout(0.5)

ÔÚѵÁ·¹ý³ÌÖÐÿ´Î¸üвÎÊýÊ±Ëæ»ú¶Ï¿ªÒ»¶¨°Ù·Ö±È£¨rate£©µÄÊäÈëÉñ¾­Ôª£¬·ÀÖ¹¹ýÄâºÏ¡£

4£©Êý¾Ý¼¯

Êý¾Ý¼¯°üÀ¨60000ÕÅ28¡Á28µÄѵÁ·¼¯ºÍ10000ÕÅ28¡Á28µÄ²âÊÔ¼¯¼°Æä¶ÔÓ¦µÄÄ¿±êÊý×Ö¡£Èç¹ûÍêÈ«°´ÕÕÉÏÊöÊý¾Ý¸ñʽ±íÊö£¬ÒÔtensorflow×÷Ϊºó¶ËÓ¦¸ÃÊÇ£¨60000,28,28,3£©£¬ÒòΪʾÀýÖвÉÓÃÁËmnist.load_data()»ñÈ¡Êý¾Ý¼¯£¬ËùÒÔÒѾ­ÅжÏʹÓÃÁËtensorflow×÷Ϊºó¶Ë£¬Òò´ËÊý¾Ý¼¯¾Í±ä³ÉÁË(60000,28,28),ÄÇôinput_shape(784,)Ó¦¸ÃÊÇinput_shape(28,28£¬)²Å¶Ô£¬µ«ÊÇÔÚÕâ¸öʾÀýÖÐÕâôдÊDz»¶ÔµÄ£¬ÐèҪת»»³É(60000,784),²Å¿ÉÒÔ¡£ÎªÊ²Ã´ÐèҪת»»ÄØ£¿

ÈçÉÏͼ£¬ÑµÁ·¼¯(60000,28,28)×÷ΪÊäÈ룬¾ÍÏ൱ÓÚÒ»¸öÁ¢·½Ì壬¶øÊäÈë²ã´Óµ±Ç°½Ç¶È¿´¾ÍÊÇÒ»¸öÆ½Ãæ£¬Á¢·½ÌåµÄÊý¾ÝÁ÷Ôõô½øÈëÆ½ÃæµÄÊäÈë²ã½øÐмÆËãÄØ£¿ËùÒÔÐèÒª½øÐлÆÉ«¼ýÍ·ËùʾµÄ±ä»»£¬È»ºó²Å½øÈëÊäÈë²ã½øÐкóÐø¼ÆËã¡£ÖÁÓÚ´Ó28*28±ä»»³É784Ö®ºóÊäÈë²ãÈçºÎ´¦Àí£¬¾Í²»ÐèÒªÎÒÃǹØÐÄÁË¡£(ϲ»¶×êÑеÄͬѧ¿ÉÒÔÈ¥Ñо¿ÏÂÔ´´úÂë)¡£

²¢ÇÒ£¬KerasÖÐÊäÈë¶àΪ(nb_samples, input_dim)µÄÐÎʽ£º¼´(Ñù±¾ÊýÁ¿£¬ÊäÈëά¶È)¡£

5£©Ê¾Àý´úÂë

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
from keras.datasets import mnist
import numpy
'''
µÚÒ»²½£ºÑ¡ÔñÄ£ÐÍ
'''
model = Sequential()
'''
µÚ¶þ²½£º¹¹½¨ÍøÂç²ã
'''
model.add(Dense(500,input_shape=(784,))) # ÊäÈë²ã£¬28*28=784
model.add(Activation('tanh')) # ¼¤»îº¯ÊýÊÇtanh
model.add(Dropout(0.5)) # ²ÉÓÃ50%µÄdropout

model.add(Dense(500)) # Òþ²Ø²ã½Úµã500¸ö
model.add(Activation('tanh'))
model.add(Dropout(0.5))

model.add(Dense(10)) # Êä³ö½á¹ûÊÇ10¸öÀà±ð£¬ËùÒÔά¶ÈÊÇ10
model.add(Activation('softmax')) # ×îºóÒ»²ãÓÃsoftmax×÷Ϊ¼¤»îº¯Êý

'''
µÚÈý²½£º±àÒë
'''
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) # ÓÅ»¯º¯Êý£¬É趨ѧϰÂÊ£¨lr£©µÈ²ÎÊý
model.compile(loss='categorical_crossentropy', optimizer=sgd, class_mode='categorical') # ʹÓý»²æìØ×÷Ϊlossº¯Êý

'''
µÚËIJ½£ºÑµÁ·
.fitµÄһЩ²ÎÊý
batch_size£º¶Ô×ܵÄÑù±¾Êý½øÐзÖ×飬ÿ×é°üº¬µÄÑù±¾ÊýÁ¿
epochs £ºÑµÁ·´ÎÊý
shuffle£ºÊÇ·ñ°ÑÊý¾ÝËæ»ú´òÂÒÖ®ºóÔÙ½øÐÐѵÁ·
validation_split£ºÄóö°Ù·ÖÖ®¶àÉÙÓÃÀ´×ö½»²æÑéÖ¤
verbose£ºÆÁÏÔģʽ 0£º²»Êä³ö 1£ºÊä³ö½ø¶È 2£ºÊä³öÿ´ÎµÄѵÁ·½á¹û
'''
(X_train, y_train), (X_test, y_test) = mnist.load_data() # ʹÓÃKeras×Ô´øµÄmnist¹¤¾ß¶ÁÈ¡Êý¾Ý£¨µÚÒ»´ÎÐèÒªÁªÍø£©
# ÓÉÓÚmistµÄÊäÈëÊý¾Ýά¶ÈÊÇ(num, 28, 28)£¬ÕâÀïÐèÒª°ÑºóÃæµÄά¶ÈÖ±½ÓÆ´ÆðÀ´±ä³É784ά
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1] * X_train.shape[2])
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1] * X_test.shape[2])
Y_train = (numpy.arange(10) == y_train[:, None]).astype(int)
Y_test = (numpy.arange(10) == y_test[:, None]).astype(int)

model.fit(X_train,Y_train, batch_size=200, epochs=50, shuffle=True, verbose=0, validation_split=0.3)
model.evaluate(X_test, Y_test, batch_size=200, verbose=0)

'''
µÚÎå²½£ºÊä³ö
'''
print("test set")
scores = model.evaluate(X_test,Y_test,batch_size=200,verbose=0)
print("")
print("The test loss is %f" % scores)
result = model.predict(X_test,batch_size=200,verbose=0)

result_max = numpy.argmax(result, axis = 1)
test_max = numpy.argmax(Y_test, axis = 1)

result_bool = numpy.equal(result_max, test_max)
true_num = numpy.sum(result_bool)
print("")
print("The accuracy of the model is %f" % (true_num/len(result_bool)))

 

   
54991 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ&TensorFlow
»úÆ÷ÈËÈí¼þ¿ª·¢¼¼Êõ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
ͼÏñ´¦ÀíËã·¨·½·¨Óëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
¶àÄ¿±ê¸ú×Ù£ºAI²úÆ·¾­ÀíÐèÒªÁ˽âµÄCVͨʶ
Éî¶Èѧϰ¼Ü¹¹
¾í»ýÉñ¾­ÍøÂç֮ǰÏò´«²¥Ëã·¨
´Ó0µ½1´î½¨AIÖÐ̨
¹¤Òµ»úÆ÷ÈË¿ØÖÆÏµÍ³¼Ü¹¹½éÉÜ
×îпγÌ
È˹¤ÖÇÄÜ£¬»úÆ÷ѧϰºÍÉî¶Èѧϰ
È˹¤ÖÇÄÜÓë»úÆ÷ѧϰӦÓÃʵս
È˹¤ÖÇÄÜ-ͼÏñ´¦ÀíºÍʶ±ð
È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ& TensorFlow+Keras¿ò¼Üʵ¼ù
È˹¤ÖÇÄÜ+Python£«´óÊý¾Ý
³É¹¦°¸Àý
ij×ÛºÏÐÔ¿ÆÑлú¹¹ È˹¤ÖÇÄÜÓë»úÆ÷ѧϰӦÓÃ
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰ& TensorFlow¿ò¼Üʵ¼ù
ijÁìÏÈÊý×ÖµØÍ¼ÌṩÉÌ PythonÊý¾Ý·ÖÎöÓë»úÆ÷ѧϰ
ÖйúÒÆ¶¯ È˹¤ÖÇÄÜ¡¢»úÆ÷ѧϰºÍÉî¶Èѧϰ