keras.applications.vgg16 インポートVGG16 から keras.models インポートシーケンシャル から keras.layers インポートConv2D、MaxPool2D、活性化、ドロップアウト、平坦化は、高密度 から keras.optimizers インポートSGD から keras.preprocessing.image インポートImageDataGenerator、img_to_array、load_imgの インポート numpyのNPとして
1 vgg16_model = VGG16(重み= ' imagenet '、include_top =偽、input_shape =(150,150,3))
1 #搭建全连接层 2 top_model = シーケンシャル() 3 top_model.add(平坦化(input_shape = vgg16_model.output_shape [1 :])) 4 top_model.add(高密度(256、活性化= ' relu ' )) 5 top_model.add (ドロップアウト(0.5 )) 6 top_model.add(高密度(2、活性化= ' ソフトマックス' )) 7 8モデル= シーケンシャル() 9 model.add(vgg16_model) 10 model.add(top_model)
= train_datagen ImageDataGenerator( rotation_range = 40、 #回転のランダム度 width_shift_range = 0.2、 #ランダム水平並進 height_shift_range = 0.2、 #ランダム垂直翻訳 再スケール= 1/255、 #データ正規化 shear_range = 20であり、 #ランダム剪断変換 zoom_range = 0.2、 #ランダム増幅 horizontal_flip =真、 #水平フリップ fill_mode = ' 最も近い'、 #の充填モード ) test_datagen = ImageDataGenerator( 再スケール= 1/255、 #1 データの正規化 )
BATCH_SIZE = 32 #生成训练数据 train_generator = train_datagen.flow_from_directory( ' 画像/列車' 、 target_size =(150,150 )、 BATCH_SIZE = BATCH_SIZE、 )# 测试数据 test_generator = test_datagen.flow_from_directory( ' 画像/試験' 、 target_size =(150,150 ) 、 BATCH_SIZE = BATCH_SIZE、 )
train_generator.class_indices
{ '猫' 0 '犬':1}
1つの #はオプティマイザを定義し、トレーニングプロセスのコスト関数算出精度 2 model.compile(オプティマイザSGD =(= 1E-LR 4、運動量= 0.9)、損失= ' categorical_crossentropy '、メトリック= [ ' 精度' ]) 。3 4 model.fit_generator(train_generator、steps_per_epoch = LEN(train_generator)、20 =エポック、validation_data = test_generator、validation_steps = LEN(test_generator))
#h5pyインストールPIP model.saveを(' model_vgg16.h5 ')
テスト
keras.models インポートload_modelの インポートNP AS numpyの ラベル = np.array([ ' CAT '、' 犬' ]) #のロードモデル モデル= load_model(' model_vgg16.h5 ' ) #のインポートイメージ 画像load_img =(「画像/テスト/ CAT / cat.1003.jpg " ) 画像
画像= image.resize((150150 )) 画像 = img_to_array(画像) 画像 =画像/ 255 画像 = np.expand_dims(イメージ、0) image.shape