主流のオープンソース深層学習フレームワークの紹介
この記事の内容:
5. 中国におけるディープラーニングのオープンソースフレームワークの状況
現在、開発者が使用できる主流のオープンソース深層学習フレームワークが多数あります。
主に TensorFlow、PyTorch、Keras、Caffe などが含まれます。
以下に、これらのフレームワークの詳細な紹介と比較を示します。
1. TensorFlow 深層学習フレームワーク
TensorFlow (Google による):
TensorFlow は、最も人気があり、広く使用されている深層学習フレームワークの 1 つです。
TensorFlow は、Google Brain チームによって開発されたオープンソースの深層学習フレームワークです。これにより、開発者は畳み込みニューラル ネットワーク、リカレント ニューラル ネットワーク、ディープ ニューラル ネットワークなどのさまざまな機械学習モデルを作成できます。
TensorFlow はデータフロー グラフを使用して計算グラフを表します。ノードは数学的演算を表し、エッジはデータ フローを表します。TensorFlow を使用すると、GPU と分散コンピューティングを利用してトレーニング プロセスを加速できます。
このフレームワークには、画像認識、自然言語処理、音声認識、レコメンデーション システムなど、幅広いアプリケーション シナリオがあります。同時に、TensorFlow には豊富なコミュニティ サポートとドキュメント リソースもあり、学習と使用が簡単になります。
- コンピューター ビジョン、自然言語処理、レコメンダー システムなど、さまざまなアプリケーションに適しています。
- ニューラル ネットワーク モデルを構築およびトレーニングするための豊富なツールとライブラリのセットを提供します。
- 静的計算グラフと動的計算グラフをサポートします。グラフ構築段階で最適化可能
- 強力な分散コンピューティング機能を備えています。
- Python、C++、Java などの複数の言語インターフェイスをサポートします。
- 自動微分、データ並列処理などの多くの高度な操作を提供します。
- さまざまなハードウェア プラットフォームでの展開と実行が簡単
- 強力なコミュニティサポートと広範なドキュメントがある
TensorFlowディープラーニングの例
以下は、TensorFlow を使用して現在のトレーニング モデルを保存し、テスト セットでテストするサンプル コードです。
コードでは、単純な線形モデルを使用し、トレーニング中にモデルを現在のディレクトリの my_model.ckpt ファイルに保存します。 。トレーニングが完了したら、テスト セットを使用してモデルをテストし、テスト セットの損失値を出力します。
import tensorflow as tf
import numpy as np
# 初始化数据和标签
train_data = np.random.rand(1000, 10)
train_labels = np.random.rand(1000, 1)
test_data = np.random.rand(200, 10)
test_labels = np.random.rand(200, 1)
# 创建输入占位符和变量
input_ph = tf.placeholder(tf.float32, shape=[None, 10])
labels_ph = tf.placeholder(tf.float32, shape=[None, 1])
weights = tf.Variable(tf.zeros([10, 1]))
bias = tf.Variable(tf.zeros([1]))
# 创建模型和损失函数
output = tf.matmul(input_ph, weights) + bias
loss = tf.reduce_mean(tf.square(output - labels_ph))
# 创建训练操作和初始化操作
train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init_op = tf.global_variables_initializer()
# 创建Saver对象
saver = tf.train.Saver()
# 训练模型
with tf.Session() as sess:
sess.run(init_op)
for i in range(100):
_, loss_val = sess.run([train_op, loss], feed_dict={input_ph: train_data, labels_ph: train_labels})
print("Epoch {}: loss = {}".format(i+1, loss_val))
# 保存模型
saver.save(sess, "./my_model.ckpt")
# 在测试集上测试模型
test_loss_val = sess.run(loss, feed_dict={input_ph: test_data, labels_ph: test_labels})
print("Test loss = {}".format(test_loss_val))
コードを実行した結果:
エポック 1: 損失 = 0.33758699893951416 エポック 2: 損失 = 0.11031775921583176 エポック 3: 損失 = 0.09063640236854553 エポック 4: 損失 = 0.0888814628124237 エポック 5: 損失 = 0。 08867537975311279 エポック 6: 損失 = 0.08860388398170471 エポック 7: 損失 = 0.0885448306798935 エポック 8: 損失 = 0.0884876698255539 エポック 9 : 損失 = 0.0884314551949501 エポック 10: 損失 = 0.08837611228227615 エポック 11: 損失 = 0.08832161128520966 エポック 12: 損失 = 0.08826790004968643 エポック 13: 損失 = 0。 08821499347686768 エポック 14: 損失 = 0.0881628543138504 エポック 15: 損失 = 0.08811149001121521 エポック 16 : 損失 = 0.08806086331605911 エポック 17: 損失= 0.08801095187664032 エポック 18: 損失 = 0.08796177059412003 エポック 19: 損失 = 0.08791326731443405 エポック 20: 損失 = 0.08786546438932419 エポック 21: 損失 = 0.08781831711530685 エポック 22 : 損失 = 0.08777181059122086 エポック 23: 損失 = 0.08772596716880798 エポック 24: 損失 = 0.08768074214458466 エポック 25: 損失 = 0.08763613551855087 エポック 26 : 損失 = 0.08759212493896484 エポック 27: 損失 = 0.08754870295524597 エポック 28: 損失 = 0.08750586211681366 エポック 29: 損失 = 0.08746359497308731 エポック 30: 損失 = 0 .08742187172174454 エポック 31 : 損失 = 0.08738070726394653 エポック 32: 損失 = 0.08734006434679031 エポック 33: 損失 = 0.08729996532201767 エポック 34: 損失= 0.08726035058498383 エポック 35: 損失 = 0.08722126483917236 エポック 36: 損失= 0.0871826633810997 エポック 37: 損失 = 0.08714456111192703 エポック 38: 損失 = 0.08710692077875137 エポック 39: 損失 = 0.08706976473331451 エポック 40 : 損失 = 0.08703305572271347 エポック 41: 損失 = 0.08699680119752884 エポック 42: 損失 = 0.08696100115776062 エポック 43 : 損失 = 0.08692563325166702 エポック 44 : 損失 = 0.08689068257808685 エポック 45: 損失 = 0.0868561640381813 エポック 46: 損失 = 0.08682206273078918 エポック 47: 損失 = 0.0867883637547493 エポック 48: 損失 = 0.0 8675506711006165 エポック 49: 損失 = 0.08672215789556503 エポック 50 : 損失 = 0.08668963611125946 エポック 51: 損失 = 0.08665750920772552 エポック 52: 損失= 0.08662573993206024 53: 損失 = 0.0865943431854248 エポック 54: 損失= 0.08656331896781921 エポック 55: 損失 = 0.08653264492750168 エポック 56: 損失 = 0.0865023210644722 エポック 57: 損失 = 0.08647233247756958 エポック 58: 損失 = 0.08644269406795502 エポック 59:損失 = 0.08641338348388672 エポック 60: 損失 = 0.08638441562652588 エポック 61: 損失 = 0.0863557755947113 エポック 62: 損失 = 0.0863274559378624 エポック 63 : 損失 = 0.08629942685365677 エポック 64: 損失 = 0.0862717255949974 エポック 65: 損失 = 0.08624432235956192 エポック 66: 損失 = 0.0862172394990921 エポック 67: 損失 = 0.0 8619043231010437 エポック 68 : 損失 = 0.08616391569375992 エポック 69: 損失 = 0.08613769710063934 エポック 71: 損失 エポック 70: 損失= 0.08611176162958145 = 0.08608610183000565 エポック 72: 損失= 0.08606073260307312 エポック 73: 損失 = 0.08603561669588089 エポック 74: 損失 = 0.08601076900959015 エポック 75: 損失 = 0.08598621189594269 エポック 76: 損失 = 0.08596190065145493 エポック 77 : 損失 = 0.08593783527612686 エポック 78: 損失 = 0.08591403067111969 エポック 79: 損失 = 0.08589048683643341 エポック 80 : 損失 = 0.08586718887090683 エポック 81 : 損失 = 0.08584412187337875 エポック 82: 損失 = 0.08582130074501038 エポック 83: 損失 = 0.0857987329363823 エポック 84: 損失 = 0.08577638119459152 エポック 85: 損失 = 0。 08575427532196045 エポック 86: 損失 = 0.08573239296674728 エポック 87: 損失 = 0.08571072667837143 エポック89: 損失 = 0.08566807210445404 エポック 90: 損失= 0.08564707636833191 エポック 88: 損失= 0.08568929135799408 エポック 91: 損失 = 0.08562628924846649 エポック 92: 損失 = 0.08560571074485779 エポック 93: 損失 = 0.0855853483080864 エポック 94: 損失 = 0.08556520193815231 エポック 95:損失 = 0.08554524928331375 エポック 96: 損失 = 0.0855254977941513 エポック 97: 損失 = 0.08550594002008438 エポック 98 : 損失 = 0.08548659086227417 エポック 99 : 損失 = 0.08546742796897888 エポック 100: 損失 = 0.08544846624135971 テスト損失 = 0.09260907769203186
2. PyTorchディープラーニングフレームワーク
PyTorch (Facebook オープンソース):
PyTorch も非常に人気のある深層学習フレームワークです。
PyTorch は、Facebook によってオープンソース化されている深層学習フレームワークであり、市場で最も人気のある深層学習フレームワークの 1 つです。これは Python 言語に基づいており、強力な GPU アクセラレーション機能と動的コンピューティング グラフのサポートを提供します。
PyTorch には、画像および音声認識、自然言語処理、コンピューター ビジョン、レコメンデーション システムなど、幅広いアプリケーションがあります。
PyTorch は使いやすさ、高い柔軟性、コードの読みやすさという特徴を備えており、深層学習の研究やアプリケーションに推奨されるフレームワークの 1 つとなっています。
- 優れた GPU 加速性能により、GPU でのトレーニングを簡単に高速化できます。
- 幅広い事前トレーニング済みモデルとツールキットを提供します。
- GPU と CPU を使用したディープラーニング用の Tensor ライブラリ。
- 動的計算グラフの構築に重点を置くことで、より柔軟なモデルの調整とデバッグが可能になり、モデルの構築とデバッグがより直感的になります。
- 柔軟性と使いやすさに優れており、研究やプロトタイピングに最適です。
- 豊富なツールとライブラリを備えたTorchなどは使いやすいです。
- 簡潔で柔軟な API を提供し、コード記述量を削減します。
- 活発なコミュニティと詳細なドキュメントに支えられています
PyTorch ディープラーニングの例
# PyTorch テンソルを使用して 3 次多項式をサイン関数に近似します。ネットワーク経由の転送と逆方向を手動で実装します。
#使用 PyTorch 张量将三阶多项式拟合到正弦函数。
#手动实现转发 并向后通过网络:
# -*- coding: utf-8 -*-
import torch
import math
dtype = torch.float
device = torch.device("cpu")
# device = torch.device("cuda:0") # Uncomment this to run on GPU
# Create random input and output data
x = torch.linspace(-math.pi, math.pi, 2000, device=device, dtype=dtype)
y = torch.sin(x)
# Randomly initialize weights
a = torch.randn((), device=device, dtype=dtype)
b = torch.randn((), device=device, dtype=dtype)
c = torch.randn((), device=device, dtype=dtype)
d = torch.randn((), device=device, dtype=dtype)
learning_rate = 1e-6
for t in range(2000):
# Forward pass: compute predicted y
y_pred = a + b * x + c * x ** 2 + d * x ** 3
# Compute and print loss
loss = (y_pred - y).pow(2).sum().item()
if t % 100 == 99:
print(t, loss)
# Backprop to compute gradients of a, b, c, d with respect to loss
grad_y_pred = 2.0 * (y_pred - y)
grad_a = grad_y_pred.sum()
grad_b = (grad_y_pred * x).sum()
grad_c = (grad_y_pred * x ** 2).sum()
grad_d = (grad_y_pred * x ** 3).sum()
# Update weights using gradient descent
a -= learning_rate * grad_a
b -= learning_rate * grad_b
c -= learning_rate * grad_c
d -= learning_rate * grad_d
print(f'Result: y = {a.item()} + {b.item()} x + {c.item()} x^2 + {d.item()} x^3')
コードを実行した結果:
99 2351.4306640625 199 1585.7086181640625 299 1071.2376708984375 399 725.2841796875 499 492.4467468261719 599 335.59881591796875 699 229.84210205078125 799 158.46621704101562 899 110.2466812133789 999 77.63826751708984 1099 55.56399154663086 1199 40.60529327392578 1299 30.45751953125 1399 23.5659236907959 1499 18.880510330200195 1599 15.69140911102295 1699 13.518349647521973 1799 12.035942077636719 1899 11.023494720458984 1999 10.331212043762207 Result: y = 0.030692655593156815 + 0.8315182328224182 x + - 0.005294993054121733 x^2 + -0.08974269032478333 x^3
3. Keras 深層学習フレームワーク
ケラス (Google):
Keras (Google) (当初は François Chollet によって開発され、現在は公式 TensorFlow API):
Keras は、Python で書かれた使いやすく強力な高レベル ニューラル ネットワーク API で、TensorFlow、CNTK、または Theano をバックエンドとして実行できます。
Keras は、迅速な実験を可能にすることに重点を置いて開発されました。遅延を最小限に抑えてアイデアを実験結果に変換できることが、優れた研究の鍵となります。
- Keras は複数のバックエンド エンジンをサポートし、Tensorflow、Theano、CNTK などのフレームワーク上で実行できます。
- 簡潔で使いやすい高レベル API を提供し、初心者やラピッド プロトタイピングに特に適しています
- 幅広いモデル ライブラリ、事前トレーニングされたモデル、さまざまなツールキットを備えているため、モデルの構築がより効率的になります。
- TensorFlow にシームレスに切り替えて、その強力な機能とエコシステムを活用できます
- (使いやすさ、高いモジュール性、拡張性により) 簡単かつ迅速なプロトタイピングが可能になります。
- 畳み込みニューラル ネットワークとリカレント ニューラル ネットワークの両方、および両方の組み合わせがサポートされています。
- CPU と GPU の両方でシームレスに実行されます。
指導原則
- ユーザーフレンドリー。Keras は、機械ではなく人間のために設計された API です。ユーザーエクスペリエンスを最重要視します。Keras は、認知的困難を軽減するためのベスト プラクティスに従っています。つまり、一貫性のあるシンプルな API を提供し、一般的なユースケースに必要なユーザー アクションの数を最小限に抑え、ユーザーが間違いを犯したときに明確で実用的なフィードバックを提供します。
- モジュール式。モデルは、独立した完全に構成可能なモジュールのシーケンスまたは図として理解されます。これらのモジュールは、できるだけ制約を少なくして組み立てることができます。特に、ニューラル ネットワーク層、損失関数、オプティマイザー、初期化メソッド、活性化関数、および正則化メソッドはすべて、新しいモデルを構築するために組み合わせることができるモジュールです。
- 簡単な拡張性。新しいモジュールは (新しいクラスや関数として) 簡単に追加でき、既存のモジュールにはすでに十分な例が用意されています。Keras は、表現力を向上させる新しいモジュールを簡単に作成できるため、高度な研究に適しています。
- Python に基づいて実装されています。Keras には、特定の形式の個別の設定ファイルがありません。モデルは Python コードで定義され、コンパクトでデバッグが容易で、拡張も簡単です。
4. Caffeディープラーニングフレームワーク
カフェ (バークレー)
Caffe の正式名称は Convolutional Architecture for Fast Feature Embedding で、「特徴抽出のための畳み込みアーキテクチャ」を意味し、明確で効率的な深層学習フレームワークであり、コア言語は C++ です。
Caffe は、畳み込みニューラル ネットワーク (CNN) およびその他の深層学習モデルのトレーニングと展開のために、カリフォルニア大学バークレー校の研究者によって開発された人気の深層学習フレームワークです。
Caffe の主な利点は、速度、使いやすさ、移植性の高さです。
コンピュータビジョン、自然言語処理、音声認識などの分野で広く使用されています。
Caffe には、事前トレーニングされたモデルと視覚化ツールを多数提供する強力なコミュニティもあり、ユーザーが独自の深層学習モデルを簡単に構築できるようになります。
- Caffe は、畳み込み演算を効率的に実行するように設計された C++ ベースの深層学習フレームワークです。
- 特にコンピュータ ビジョン タスクに適しており、画像分類やオブジェクト検出で優れたパフォーマンスを発揮します。
- Caffe は、ネットワーク構造とハイパーパラメータを定義するための単純な構成ファイルを提供します。
- 効率的な GPU アクセラレーションにより、大規模なデータセットでモデルをトレーニングするのに適しています。
5. 中国におけるディープラーニングのオープンソースフレームワークの状況
- 中国のディープラーニングオープンソースフレームワーク市場は3つの強力なプレーヤーのパターンを形成している
国際的に権威のあるデータ調査機関であるIDCは、レポート「中国のディープラーニングフレームワークおよびプラットフォーム市場シェア、2022年下半期」を発表した。このレポートは、Baidu が中国のディープラーニング プラットフォーム市場全体の市場シェアで第 1 位にランクされ、そのリードをさらに拡大していることを示しています。中国のディープラーニングオープンソースフレームワーク市場は上位3位構造を形成しており、上位3位のフレームワーク市場シェアは80%を超えている。
6. 複数のフレームワークの比較
いくつかのフレームワークの比較表
現在、最も人気のある深層学習フレームワークには、TensorFlow、PyTorch、Caffe などがあります。
市場調査会社オライリーが発表した「2019年AI・ディープラーニング市場調査レポート」によると、最も人気のあるディープラーニングフレームワークはTensorFlowで、回答者の57.2%が利用している。PyTorch が僅差で 2 番目で、回答者の 37.1% が使用していました。Caffe と Keras も人気があり、それぞれ市場の 16.2% と 13.7% を占めています。
いくつかの一般的な深層学習フレームワークの市場シェアの比較 (2021 年) |
||
TensorFlow: |
40%以上、 |
これは、最も人気のある深層学習フレームワークの 1 つです。 |
パイトーチ: |
25%以上、 |
Facebook によって開発および保守され、徐々に注目を集め、近年広く使用されています。 |
難しい: |
10%以上、 |
TensorFlow と一緒に使用されることが多く、よりシンプルで使いやすいフレームワークを提供します。 |
カフェ: |
約5%、 |
この市場は、コンピュータービジョンや画像処理などの分野に適用されます。 |
MXネット: |
約5%、 |
マーケットプレイスは、大規模な分散ディープラーニングのために Amazon によって開発および維持されています。 |
これらのフレームワークの主な機能の簡単な比較表
TensorFlow |
パイトーチ |
難しい |
|
演算グラフ |
静止画像 |
ダイナミックな映像 |
静止画像 |
言語インターフェース |
Python、C++、Java など |
パイソン |
パイソン |
API |
リッチ |
簡潔 |
簡潔 |
ハードウェアサポート |
広く |
ダイナミックな映像 |
限定 |
コミュニティサポート |
強力な |
アクティブ |
アクティブ |
フレーム |
静止画像 /ダイナミックグラフ |
多様化 応用分野 |
柔軟性 そして使いやすさ |
GPU 加速性能 |
事前トレーニングされたモデル とツールキット |
TensorFlow |
静止画像 |
広く使われています |
中くらい |
素晴らしい |
リッチ |
パイトーチ |
ダイナミックな映像 |
広く使われています |
並外れた |
素晴らしい |
リッチ |
難しい |
静止画像 |
広く使われています |
素晴らしい |
並外れた |
リッチ |
カフェ |
静止画像 |
コンピュータビジョン |
中くらい |
中くらい |
一般的 |
これらのフレームワークにはそれぞれ長所と短所があり、異なるアプリケーション シナリオでは異なる最適な選択肢がある可能性があることに注意してください。したがって、フレームワークを選択する際は、プロジェクトのニーズや研究の方向性、プログラミングのスキルや個人的な好みに応じて決定し、評価と比較を行って、最終的に特定のフレームワークを選択することをお勧めします。
7. その他の統計データ
.NET (5+) ユーザーが来年使用すると予想される上位 3 つのオプションは、.NET (5+)、.NET MAUI、および .NET Framework (1.0 ~ 4.8) です。.NET はコミュニティ内で非常に部分的なものです。
推奨読書:
写真の背景色を変更する (Python+opencv) | 12種類の猫 | 大規模モデル__仮想アンカー インスタンスに基づく仮想デジタル ヒューマン |
コンピュータ ビジョン__基本的な画像操作 (表示、読み取り、保存) | ヒストグラム(カラーヒストグラム、グレースケールヒストグラム) | ヒストグラムイコライゼーション(画像の明るさ、コントラストを調整) |
2023 年 4 月の権威ある組織の数____プログラミング言語ランキング__給与状況 | ||
|
||
[CSDN Cloud IDE] 個人的な経験と提案 (超詳細な操作チュートリアルを含む) (Python、webGL ディレクション) | jdkのインストールパスを確認し、Windows上で複数のjava jdkの共存解決を実現し、java19インストール後のターミナル文字化けを解決する |
|