Conv2Dを用いた画像クラス分類【python,keras】
Sal
python Conv2Dを用いた画像クラス分類について,githubにあげられているソースコードをもとに

Conv2Dを用いた画像クラス分類【python,keras】

  1. ソースコード(コピペで動く)
  2. 今回使用するライブラリー
  3. 10クラス分類を行う
  4. データのロード
  5. #float32データに直し、255で割る
  6. #one-hotエンコーディングを行う
  7. ニューラルネットワークのアーキテクチャ
  8. #三層構造になっているInput層
  9. Conv2Dという「畳み込みネットワーク」を用いることで画像認識の精度は上がる
  10. #Conv2D二層目
  11. #1-10ラベルそれぞれの確率を求めるために平坦化
  12. #outputは10種類でsoftmax関数を用いて合計が確率の1になるようにする
  13. #モデル作成完了
  14. #外観
  15. 訓練方式を設定
  16. 訓練開始
##ソースコード(コピペで動く)

import numpy as np
import matplotlib.pyplot as plt


from tensorflow.keras.layers import Input, Flatten, Dense, Conv2D
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.utils import to_categorical

from tensorflow.keras.datasets import cifar10

##10クラス分類を行う
NUM_CLASSES = 10

##データのロード
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

###float32データに直し、255で割る
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

###one-hotエンコーディングを行う
y_train = to_categorical(y_train, NUM_CLASSES)
y_test = to_categorical(y_test, NUM_CLASSES)



##ニューラルネットワークのアーキテクチャ

###三層構造になっているInput層
input_layer = Input(shape=(32,32,3))

##Conv2Dという「畳み込みネットワーク」を用いることで画像認識の精度は上がる
conv_layer_1 = Conv2D(
    filters = 10
    , kernel_size = (4,4)
    , strides = 2
    , padding = 'same'
    )(input_layer)

###Conv2D二層目
conv_layer_2 = Conv2D(
    filters = 20
    , kernel_size = (3,3)
    , strides = 2
    , padding = 'same'
    )(conv_layer_1)

###1-10ラベルそれぞれの確率を求めるために平坦化
flatten_layer = Flatten()(conv_layer_2)

###outputは10種類でsoftmax関数を用いて合計が確率の1になるようにする
output_layer = Dense(units=10, activation = 'softmax')(flatten_layer)

###モデル作成完了
model = Model(input_layer, output_layer)

###外観
model.summary()



##訓練方式を設定
opt = Adam(lr=0.0005)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

##訓練開始
model.fit(x_train
          , y_train
          , batch_size=32
          , epochs=10
          , shuffle=True
          , validation_data = (x_test, y_test))
##今回使用するライブラリー

import numpy as np
import matplotlib.pyplot as plt


from tensorflow.keras.layers import Input, Flatten, Dense, Conv2D
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.utils import to_categorical

from tensorflow.keras.datasets import cifar10
##10クラス分類を行う

NUM_CLASSES = 10
##データのロード

(x_train, y_train), (x_test, y_test) = cifar10.load_data()
###float32データに直し、255で割る

x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
###one-hotエンコーディングを行う

y_train = to_categorical(y_train, NUM_CLASSES)
y_test = to_categorical(y_test, NUM_CLASSES)
##ニューラルネットワークのアーキテクチャ
###三層構造になっているInput層

input_layer = Input(shape=(32,32,3))
##Conv2Dという「畳み込みネットワーク」を用いることで画像認識の精度は上がる

conv_layer_1 = Conv2D(
    filters = 10
    , kernel_size = (4,4)
    , strides = 2
    , padding = 'same'
    )(input_layer)
###Conv2D二層目

conv_layer_2 = Conv2D(
    filters = 20
    , kernel_size = (3,3)
    , strides = 2
    , padding = 'same'
    )(conv_layer_1)
###1-10ラベルそれぞれの確率を求めるために平坦化

flatten_layer = Flatten()(conv_layer_2)
###outputは10種類でsoftmax関数を用いて合計が確率の1になるようにする

output_layer = Dense(units=10, activation = 'softmax')(flatten_layer)
###モデル作成完了

model = Model(input_layer, output_layer)
###外観

model.summary()
##訓練方式を設定

opt = Adam(lr=0.0005)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
##訓練開始

model.fit(x_train
          , y_train
          , batch_size=32
          , epochs=10
          , shuffle=True
          , validation_data = (x_test, y_test))
title:Conv2Dを用いた画像クラス分類【python,keras】 img:https://blog-imgs-115.fc2.com/s/h/o/shopdd/TensorFlow_keras_GPU_000.png description:Conv2Dを用いた画像クラス分類について,githubにあげられているソースコードをもとに