独占 | R で Keras と TensorFlow を使用してディープラーニング モデルを構築する方法を教えます

独占 | R で Keras と TensorFlow を使用してディープラーニング モデルを構築する方法を教えます

[[197801]]

導入:

R と Python のどちらを選択するかは、常に熱く議論されているトピックです。機械学習の世界も言語の好みによって分かれています。しかし、ディープラーニングの人気が高まるにつれ、バランスは徐々に Python に傾いてきました。これは、これまでのところ Python には、R にはないディープラーニング リソース ライブラリとフレームワークが多数あるためです。

私が個人的に R から Python に切り替えたのは、R だけを使用して機械学習の世界をさらに深く理解したいと思ったからです。これは R だけではほとんど不可能でした。しかし、それだけです!

R での Keras の実装により、言語選択の争いが再び中心的な位置に戻ってきました。 Python は徐々にディープラーニングモデリングのデフォルト言語となりつつありますが、TensorFlow (CPU と GPU の両方に対応) をバックエンドとする R の Keras フレームワークがリリースされたことで、ディープラーニングの分野でも R と Python の舞台を巡る戦いが再び始まりました。

次に、R で TensorFlow に基づく Keras フレームワークをインストールする方法を確認し、RStudio で従来の MNIST データセットに基づく最初のニューラル ネットワーク モデルを構築します。

コンテンツ:

  • TensorFlow をバックエンドとして Keras フレームワークをインストールする
  • RでKerasを使用してさまざまな種類のモデルを構築できます
  • R の MLP を使用して MNIST 手書き数字を分類する
  • MNIST の結果を Python の同等のコードと比較する
  • 結論

1. TensorFlowをバックエンドとしてKerasフレームワークをインストールする

RStudio に Keras をインストールする手順は非常に簡単です。以下の手順に従うだけで、R で最初のニューラル ネットワーク モデルを構築できるようになります。

  1. install.packages( "devtools" )
  2.  
  3. devtools::install_github( "rstudio/keras" )

上記の手順により、Github リポジトリから Keras がダウンロードされます。次に、keras を R にロードし、TensorFlow をインストールします。

  1. ライブラリ(keras)

デフォルトでは、RStudio は TensorFlow の CPU バージョンをロードします。 TensorFlow の CPU バージョンが正常にロードされない場合は、次のコマンドを使用してダウンロードします。

  1. インストール_tensorflow()

単一ユーザーまたはデスクトップ システムに GPU サポート付きの TensorFlow をインストールするには、次の手順に従います。

  1. install_tensorflow(gpu= TRUE )を実行します。

マルチユーザーインストールについては、このガイドを参照してください: https://tensorflow.rstudio.com/installation_gpu.html。

現在、RStudio には keras と TensorFlow の両方がインストールされています。まず、R で最初のニューラル ネットワークを構築し、MNIST データセットを処理してみましょう。

2. Rでkerasを使用して構築できるさまざまな種類のモデル

以下は、RでKerasを使用して構築できるモデルのリストです。

  1. 多層パーセプトロン
  2. 畳み込みニューラルネットワーク
  3. リカレントニューラルネットワーク
  4. スキップグラムモデル
  5. 事前トレーニング済みモデル(VGG16、RESNETなど)を使用する
  6. 事前学習済みモデルの微調整

まず、隠し層が 1 つだけのシンプルな MLP モデルを構築して、手書きの数字を分類してみましょう。

3. R の MLP を使用して MNIST 手書き数字を分類する

  1. #kerasライブラリの読み込み
  2.  
  3. ライブラリ(keras)
  4.  
  5. #keras に組み込まれている mnist データセットをロードする
  6.  
  7. データ<-dataset_mnist()
  8.  
  9. #トレーニングファイルテストファイルを分離する
  10.  
  11. train_x<-データ$train$x
  12.  
  13. train_y<-データ$train$y
  14.  
  15. test_x<-データ$テスト$x
  16.  
  17. test_y<-データ$test$y
  18.  
  19. rm(データ)
  20.  
  21. # 2D配列を1D配列変換してMLP入力し行列を正規化する
  22.  
  23. train_x <- 配列(train_x, dim = c(dim(train_x)[1], prod(dim(train_x)[-1]))) / 255
  24.  
  25. test_x <- 配列(test_x, dim = c(dim(test_x)[1], prod(dim(test_x)[-1]))) / 255
  26.  
  27. #keras の組み込み関数を使用して、ターゲット変数を 1 回だけホットエンコードされたベクトル変換します 
  28.  
  29. train_y<-to_categorical(train_y,10)
  30.  
  31. test_y<-to_categorical(test_y,10)
  32.  
  33. #Keras シーケンシャル モデルの定義
  34.  
  35. モデル <- keras_model_sequential()
  36.  
  37. # 入力層 1 つ [784 ニューロン]、ドロップアウト率 0.4隠れ層 1 つ [784 ニューロン] 出力1 つ[10 ニューロン]モデルを定義
  38.  
  39. #つまり0から9までの数字
  40.  
  41. モデル %>%
  42.  
  43. レイヤー密度(単位 = 784、入力形状 = 784) %>%
  44.  
  45. レイヤードロップアウト(率=0.4)%>%
  46.  
  47. レイヤーアクティベーション(アクティベーション = 'relu' ) %>%
  48.  
  49. レイヤー密度(単位 = 10) %>%
  50.  
  51. レイヤーアクティベーション(アクティベーション = 'softmax' )
  52.  
  53. #メトリック= 精度オプティマイザーをAdamとして定義したモデルをコンパイルします
  54.  
  55. モデル %>% コンパイル(
  56.  
  57. 損失 = 'カテゴリクロスエントロピー'
  58.  
  59. オプティマイザー = 'adam'
  60.  
  61. メトリック = c( '精度' )
  62.  
  63.  
  64. #トレーニングデータセットにモデルを適合させる
  65.  
  66. モデル %>% fit(train_x, train_y, エポック = 100, batch_size = 128)
  67.  
  68. #クロスバリデーションデータセットでのモデルの評価
  69.  
  70. loss_and_metrics <- モデル %>% 評価(test_x、test_y、batch_size = 128)

上記のコードは、99.14% のトレーニング精度と 96.89% の検証精度を達成しました。このコードを i5 プロセッサで実行すると、トレーニング実行が完了するまでに 13.5 秒かかりますが、TITANx GPU では検証精度は 98.44% に達し、実行あたりのトレーニング時間は平均 2 秒です。

4. keras を使用して MLP モデルを構築する — R と Python

より良い比較のために、私は Python を使用して上記の MINIST 分類問題を解きました。 R はプロセス (conda インスタンス) を作成し、その中で keras を実行するため、結果に違いはありません。ただし、次の同等の Python コードを試すことはできます。

  1. #MLPモデル必要なライブラリをインポートする
  2.  
  3. kerasをインポートする
  4.  
  5. keras.modelsからSequentialをインポートする
  6.  
  7. numpyをnpとしてインポートする
  8.  
  9. #kerasからMNISTデータセットを読み込む
  10.  
  11. keras.datasetsからmnistをインポートする
  12.  
  13. (x_train, y_train)、(x_test, y_test) = mnist.load_data()
  14.  
  15. #x_train、y_train、x_test y_testMLP入力適合するように再形成し  出力寸法
  16.  
  17. x_train = np.reshape(x_train,(x_train.shape[0],-1))/255
  18.  
  19. x_test = np.reshape(x_test,(x_test.shape[0],-1))/255
  20.  
  21. pandasをpdとしてインポートする
  22.  
  23. y_train = pd.get_dummies(y_train)
  24.  
  25. y_test = pd.get_dummies(y_test)
  26.  
  27. #トレーニングテストターゲット変数ワンホットエンコーディングを実行する
  28.  
  29. y_train = np.array(y_train)
  30.  
  31. y_test = np.array(y_test)
  32.  
  33. #入力層 1 つ [784 ニューロン]、ドロップアウト率 0.4隠れ層 1 つ [784 ニューロン] 出力1 つ[10 ニューロン]を持つモデルの定義
  34.  
  35. モデル=シーケンシャル()
  36.  
  37. keras.layersからDenseをインポート
  38.  
  39. モデルを追加します(Dense(784, input_dim=784, activation= 'relu' ))
  40.  
  41. keras.layers.core.Dropout(レート=0.4)
  42.  
  43. モデルを追加します(Dense(10,input_dim=784,activation= 'softmax' ))
  44.  
  45. # Adam オプティマイザー精度を基準としてモデルをコンパイルする
  46.  
  47. model.compile(損失= 'categorical_crossentropy' 、オプティマイザー= "adam" 、メトリック=[ 'accuracy' ])
  48.  
  49. # モデルの適合検証の実行
  50.  
  51. モデルを適合(x_train、y_train、エポック=50、バッチサイズ=128、検証データ=(x_test、y_test))

上記のモデルは、同じ GPU 上で 98.42% の検証精度を達成しました。したがって、最初に推測したとおり、結果は同じです。

V. 結論

これが R で構築された最初のディープラーニング モデルである場合は、プロセスを楽しんでいただければ幸いです。非常にシンプルなコードを使用して、手書きの値を 98% の精度で分類できます。これにより、機械学習の分野を探求する十分な動機が得られるはずです。

Python で keras ディープラーニング フレームワークを使用したことがある場合は、R の keras フレームワークの構文と構造が Python のものと非常に似ていることがわかります。実際、R の keras パッケージは conda 環境を作成し、その環境で keras を実行するために必要なものをすべてインストールします。しかし、私がさらに興奮するのは、データ サイエンティストが R を使用して現実の状況に合わせたディープラーニング モデルを構築しているのを見ることです。諺にあるように、競争は決して終わらない。

<<:  ひどい、顔認識の練習のための40行のコード

>>:  人工知能やビッグデータ製品の開発において、特に注意すべき点は何でしょうか?

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

AI + スマート交通が全体のアップグレードと調整を実現

[[353150]]人工知能は、人間のように知覚、認識、決定、実行できる人工プログラムまたはシステム...

...

待望のAIは人工知能か、それとも人工的な愚かさか?

[[399557]]人工知能という言葉が初めて世間の注目を集めたのは、1956 年にダートマス大学...

大量データのための2次パーソナルコネクションマイニングアルゴリズム(Hadoop実装)

私は最近、Sina Weibo の「あなたに興味があるかもしれない人々」の間接的なフォローアップ推奨...

...

テンセントクラウドの「AIスーパーベース」特別セッションがWOTカンファレンスで発表され、技術革新がAIインフラの新たな章を導く

過去2年間、「百機種戦争」は中国で人気の技術トピックになりました。 2020年以降、中国は大型モデル...

世界中のコードの品質が急激に低下、その原因は AI です。 1億5300万行のコードの詳細な分析レポートが公開されました

AI が世界中のコード品質を低下させています。最近、GitClear が発表した調査レポートによると...

北京大学やテンセントなどが言語を使ってマルチモーダル情報を整合させるLanguageBindを提案し、複数のランキングを更新した。

現代社会では、情報の伝達やコミュニケーションはもはや単一のモードに限定されなくなりました。私たちは、...

C# アルゴリズム アプリケーションでのガウス消去法の実装

C# アルゴリズム アプリケーションでガウス消去法を実装するにはどうすればよいでしょうか?工学の学習...

...

...

メタバースは過大評価されてきたが、2050年までにAIによって現実のものとなる

メタバースの概念が誇張され、まるでそれが本当に存在するかのように人々が話していることは間違いありませ...

...

...