![見出し画像](https://assets.st-note.com/production/uploads/images/58059398/rectangle_large_type_2_b1d1718fa75f463210bde3d1740a13a6.png?width=1200)
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の方を好む方も多いということです。