見出し画像

やってみよう!機械学習 - keras(TensorFlow)1

TensorFlowのライブラリとして使われている"keras"で使い方の流れを確認しながら実際に使ってみましょう。

scikit-Learnで機械学習として作っていきましたが、深層学習、ディープラーニングのkerasはモデルの作り方に違いがあります。

scikit-Learnではモデル自体を選んで使いましたが、kerasの場合はそのモデルを作るために部品を選び構築していきます。画像分類をやっていきます。

事前準備がいらないGoogle Colabを使います。

kerasを使うためにライブラリをインポートします。

import tensorflow as tf

計算しやすい(numpy)、見た目わかりやすくするライブラリ( matplotlib)をインポートします。

import numpy as np
import matplotlib.pyplot as plt

そして使うデータをkerasのデータセットからインポートします。

fashion_mnist = tf.keras.datasets.fashion_mnist

fashion_mnistを使います。そしてすぐ使えるように変数に代入します。

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

低解像度(28 x 28 ピクセル)で個々の衣料品の画像とその名前が使えるようになります。

トレーニングデータ

train_images ・・・ 画像のデータ
train_labels ・・・ 画像データが何であるかを示す0から9の数字  

テストデータ

test_images ・・・ 画像のデータ
test_labels ・・・ 画像データが何であるかを示す0から9の数字 

画像のデータを見てみます。

train_images[0]
array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,  ・・・・・
    ・・・・・

配列で数字の羅列が出てきます。この並びで画像が表現されます。0から255の数字で表されます。

この数字の羅列を画像に変換、表示させます。

plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()

ラベルを見てみます

train_labels[0]
9

数字が出てきました。これを名前に変換するために配列を用意します。

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

これを使い、ラベルの"9"出力します。

class_names[9]

実行すると

Ankle boot

と出てきます。

データの数も見てみます。画像を見てみます。

train_images.shape

として実行すると"(60000, 28, 28)"と出力されます。28 × 28 ピクセルの画像が 60,000 含まれていることがわかります。ラベルも同じように

train_labels.shape

"(60000,)"と出てきます。

これから実際にこのデータを使って処理をしていきますが、そのままでは使えません。画像が0から255になっているので使いやすく0から1に変更するために255で割る処理をします。

train_images = train_images / 255.0

test_images = test_images / 255.0

25枚の画像を表示してみます。

plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
plt.show()


これで準備は完了です。

この記事が気に入ったらサポートをしてみませんか?