Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AI勉強会_Kerasハンズオン#1_分類

taashi
April 17, 2019

 AI勉強会_Kerasハンズオン#1_分類

社内勉強会資料

Keras
Google Colaboratory

(修正中...)
- precision, recallの説明追加

taashi

April 17, 2019
Tweet

More Decks by taashi

Other Decks in Technology

Transcript

  1. (%"# )  :    !  :

    $ !   Notebook 
  2. ColabDrive&+ Google Drive!   drive" Colb)' drive"%*  from

    google.colab import drive drive.mount('/content/drive') "( google.colabdrive !  Drive.mount$#  Google Drive! 
  3. E@$#%"! <; *(7- ?.=384 :E@ 96  <;7  <;&'!Slack>

    1,  PLAYGROUND /  0C   D5)+A - $# -2B  
  4. ,89 Team Drives*(@2)/$#!7 "'   10Team Drives$#!5< (3:- 

    …) # [001] Install use items &% !.+  Team Drives $#!"' .+46 =;  >? # [002] Mount GoogleDrive # [003] Copy data from google drive # [004] Check directory structure
  5.   Keras")* $&!    '&  

    % $  )*#(   )* $ 
  6. :'<$  /1 !%   '<9 '<7 *)0 

     (C F ) '<!%  '<93"      !5 '<9> (,?) '<  8) CF'<9A'<   D+('24)(6.  8) FBC;&C'<-= (@+ #E)
  7. Keras PythonA 8<BNNW0!,01 +($"4*TensorFlow, CNTK, Theano ; ID-3)'!- @ 

    CPUGPU6%.2&;@ … etc :>A =?7#&&/ (=?7   ) 59 (JH)  E : =?7 GCF
  8. #$ # [005] Define constant value # [006] Make data

    file list # [007] Check dog data # [008] Check cat data    "   ! " ‘_t_XXX.png’ &(Train) ‘_v_XXX.png’  (Validation) ‘_e_XXX.png’ %(Evaluate)
  9. +.0  )C57 ,? %98 /- %98%:=>E04 @) H*(:[1, 0],

    G*(:[0, 1] ,? ;F %98G or H OneHotVector )CA("$%&#!),? 6 2 %98'.(B1D ) numpy>E04<3 
  10. !#'% KerasOneHotVactor -*' &#$  import keras.utils as ku class_ids

    = np.array([1, 0, 1, 1, 2, 0]) one_hots = ku.to_categorical(class_ids) print(one_hots) > [[0, 1, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 0, 0]] # [009] Make input and teacher data   "  (,cv2imread  Numpy)+ OK
  11. !$ Keras!$ 1) Sequential " 2) functional API# " 

      Keras!$ "  2) &(  " 2)functional API# "'%  
  12. #&) %   functional API$ % input_layer = Input((64,

    64, 1)) cv_1_layer = Conv2D(32, 3)(input_layer) cv_2_layer = Conv2D(64, 3)(cv_1_layer) max_layer = MaxPooling2D()(cv_2_layer) flat_layer = Flatten()(max_layer) output_layer = Dense(2)(flat_layer) *'(" Keras !  
  13.  Input&!    input_layer = Input((64, 64, 1))

    ( Input(input_shape) #% input_shape '    $ "
  14. Convolution!Conv2D1)  Convolution! cv_1_layer = Conv2D(32, 3)(input_layer) 4 Conv2D(filters, kernel_size,

    strides=(1, 1), padding=‘valid’, activation=None) *,- filters ( ) (30/%.-) kernel_size  - 5 #"+% strides  - 5 #"+% padding’valid’padding3 ’same’ 2('&$  activation
  15. MaxPoolingMaxPooling2D.&  MaxPooling max_layer = MaxPooling2D()(cv_layer) 3 MaxPooling2D(pool_size=(2, 2), strides=None)

    ')* pool_size  *4 " (# strides  *4 " (# ,%2+$ . /5610-! 
  16.   Dense     output_layer = Dense(2)(flat_layer)

     Dense(units, activation=None)   units  activation
  17. ;5F(%'- #! (%'- #!3D CB 14,"* (Input)!G.E7<,"*  9:input_shape==3A8 CB

    @?& $!6>/ 0/2 & $!)+%'( @?)A8  3D # [010] Define Network
  18.  input_layer = Input(IMAGE_SHAPE) cv1_1 = Conv2D(32, 3, padding='same', input_shape=IMAGE_SHAPE)(input_layer)

    cv1_1 = Activation(activation='relu')(cv1_1) cv1_2 = Conv2D(32, 3, padding='same')(cv1_1) cv1_2 = Activation(activation='relu')(cv1_2) cv1_max = MaxPooling2D()(cv1_2) cv2_1 = Conv2D(64, 3, padding='same')(cv1_max) cv2_1 = Activation(activation='relu')(cv2_1) cv2_2 = Conv2D(64, 3, padding='same')(cv2_1) cv2_2 = Activation(activation='relu')(cv2_2) cv2_max = MaxPooling2D()(cv2_2) flat_layer = Flatten()(cv2_max) fc = Dense(2)(flat_layer) output_layer = Activation(activation='softmax')(fc)
  19.  "  Model#  Keras  model = Model(inputs=[input_layer],

    outputs=[output_layer]) Model  !  inputs (  ) outputs   ( )(  )   % $  
  20. ()'#  ! & '# model.summary()  +*$ from keras.utils

    import plot_model plot_model(model, to_file=MODEL_PNG_NAME) to_file "  dot ()%
  21. !-  !-      model.compile(optimizer=Adam(), loss='categorical_crossentropy',

    metrics=['accuracy']) " %&  optimizer   loss metrics " [’accuracy’]( $ ,#' +*& crossentropy) 
  22.   fit   history = model.fit(train_inputs, train_teachers, batch_size=20,

    epochs=100 , validation_data=(valid_inputs, valid_teachers) , shuffle=True, verbose=1, callbacks=callbacks)   train_inputs$*#! train_teachers$*#') batch_size  epochs  % validation_data&(# (!, ')) shuffle!   verbose$*!" (1 ) callbacks %()
  23. + "&  + model.save_weights(save_file_name) $+ &  ' )*%#(!

     model.save(save_file_name) )* $+ &  , & 
  24.  +  # [012] Train    

    !*Adam )'$categorical_crossentropy & % (# +",
  25. +./, # [013] Check loss and acc  ' 

    &#(3loss41acc41$  )% loss((3loss) %   (3 )% val loss(*-loss) 5%  "! 0(32
  26. 0, 0,&"#$ +(  "#$ from keras.models import load_model model

    = load_model(model_file) !%-. '/  $    model = Model(inputs=[input_layer], outputs=[output_layer]) model.load_weights(model_file) )'/  $  "#-.* $ 
  27.  predict   model.predict(predict_inputs)   predict_inputs  (

     )       # [014] Load trained model    # [015] Predict (Train data)  # [016] Predict (Valid data) # [017] Predict (Evaluate data)
  28.   Dropout      drop_layer =

    Dropout()(cv_layer)  Dropout(rate)  rate
  29. ;JIL0'$)8H   "&*<F'$)G 8H"&*BK Keras  Callback(!:=  64A;J-.

     A;J1 lossE N28H</ Callback;J+C%#M(O@3 %#M) ) D97,  ;J(fit)5?callbacls>?@3 
  30. # "  ModelCheckpoint " import keras.callbacks as kc kc.ModelCheckpoint(

    filepath=MODEL_FILE_NAME, save_weights_only=True , save_best_only=True, period=1)    filepath (  ) save_weights_only   save_best_only  period  ! val_loss!