見出し画像

SciKit-Learn,Keras,PyTorchの違いってなに?- Keras,Pytorch

Kerasをみていきます。

Tensorflowはエンドツーエンドかつオープンソースの深層学習のフレームワークであり、Googleによって2015年に開発・公開されました。

KerasはTensorflowに導入されました。ユーザーはtensorflow.kerasモジュールからアクセスできます。また、Kerasライブラリは今まで通り独立して動作することもできます。

概念的なことから丁寧に説明してあるサイトです。

必要なレイヤーを追加していく感じで構築して行きます。以下はKerasの例ですが流れはどのフレームワークでも同じです。

コード全体を見てみます。

手順としては、まず必要なライブラリをimportしてから以下を実行します。データとしてはsklearnのあやめのデータを使っています。以下のコードは上記サイトより使わせていただいています。

1 データを用意する。
2 モデルを作成する。
3 学習
4 評価
import tensorflow as tf
import keras
from sklearn import datasets, preprocessing
from sklearn.model_selection import train_test_split
from keras.layers.core import Dense, Activation
from keras.models import Sequential
from keras.utils import np_utils
           
# アヤメのデータの読み込み(scikit-learnに含まれているサンプル)
iris = datasets.load_iris()
x = iris.data
y = iris.target
           
# データの前処理
x = preprocessing.scale(x)
y = np_utils.to_categorical(y)
           
# 学習データとテストデータに分割
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)
           
# モデルの作成
model = Sequential()
model.add(Dense(input_dim=4, units=3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy',
metrics=['accuracy'])
           
# 学習
model.fit(x_train, y_train, epochs=50, batch_size=1, verbose=1)
           
# 評価
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print ('Accuracy', '{:.2f}'.format(accuracy))

実行すると

Accuracy 0.92

と出力されます。92%の正解率ということです。

SciKit-Learnと違うところはモデルを作成するところです。

model = Sequential()
model.add(Dense(input_dim=4, units=3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy',
metrics=['accuracy'])

データの処理をする部分modelを自分で作って行きます。必要なものを".add"として追加して構築します。そしてデータの処理についても方法を与えるだけで、必要なパラメータはその作るmodel自体で処理をします。SciKit-Learnだとパラメータ等は人が指定しているので、この辺が大きく違っています。自由度は上がり、柔軟に対応ができます。人が人工的に与えているのがSciKit-Learnでそのネットワーク自体が設定していくのがKeras、Tensorflow、PyTorchということになります。

KerasはTensorflowで使われています。Tensorflowとよく比べられるフレームワークとしては、PyTorchがあります。
PyTorchの公式サイトは以下

日本語チュートリアルもあります。

PytorchとTensorFlowのコーディングを比較されているのが以下で、

TensorflowはKerasを使うことで分かりやすくなっっているということで、デバックのことを考えるとPytorchの方を好む方も多いということです。

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