TensorFlow は手書きの数字を認識するために Softmax 回帰を実装します。 MNIST (混合国立標準技術研究所データベース)、単純なマシン ビジョン データ セット、28X28 ピクセルの手書き数字、グレースケール値情報のみ、空白部分は 0、手書き文字は色深度に従って [0, 1] から取得されます, 2次元空間の情報を捨てた784次元で、対象は0から9までの10カテゴリーに分かれています。データ読み込み、data.read_data_sets、55,000 サンプル、テスト セット 10,000 サンプル、検証セット 5,000 サンプル。アノテーション情報、ラベル、10次元ベクトル、10種類のワンホットエンコーディングのサンプル。トレーニング セットはモデルをトレーニングし、検証セットは効果をテストし、テスト セットはモデル (精度、再現率、F1 スコア) を評価します。
アルゴリズム設計、ソフトマックス回帰は、手書き数字認識分類モデルをトレーニングし、カテゴリ確率を推定し、最大確率数値をモデル出力結果として取得します。クラス特徴を追加して、クラス確率を決定します。モデル学習トレーニングでは重みを調整します。 Softmax、さまざまな特徴計算exp関数、標準化(すべてのカテゴリの出力確率値は1)。 y = ソフトマックス(Wx+b)。
NumPy は C、fortran を使用し、openblas および mkl 行列演算ライブラリを呼び出します。 TensorFlow の高密度で複雑な操作は、Python の外部で実行されます。計算グラフを定義します。計算操作は毎回 Python に転送する必要はありません。すべての操作は Python の外部で実行されます。
tensor flow を tf としてインポートし、TensorFlow ライブラリをロードします。 less = tf.InteractiveSession() は、InteractiveSession を作成し、それをデフォルトのセッションとして登録します。異なるセッションのデータと操作は互いに独立しています。 x = tf.placeholder(tf.float32, [None,784]) は、入力データを受け取るプレースホルダーを作成します。最初のパラメーターはデータ型で、2 番目のパラメーターはテンソル形状データ サイズを表します。なし 入力の数に制限はありません。各入力は 784 次元のベクトルです。
Tensor はデータを保存し、一度使用すると消去されます。変数はモデルのトレーニング反復で永続的であり、長期間存在し、反復ごとに更新されます。 Softmax 回帰モデルの変数オブジェクトの重みとバイアスは 0 に初期化されます。モデルのトレーニングにより、適切な値が自動的に学習されます。複雑なネットワークの場合、初期化方法が重要です。 w = tf.Variable(tf.zeros([784, 10]))、784 特徴次元、10 カテゴリ。ラベル、ワンホット エンコーディング後の 10 次元ベクトル。
ソフトマックス回帰アルゴリズム、y = tf.nn.softmax(tf.matmul(x, W) + b)。 tf.nn には、多数のニューラル ネットワーク コンポーネントが含まれています。 tf.matmul、行列乗算関数。 TensorFlow は、損失が定義されている限り、順方向および逆方向のコンテンツを自動的に実装し、トレーニングによって勾配降下法が自動的に導出され、Softmax 回帰モデルのパラメーターの自動学習が完了します。
問題モデルの分類精度を記述する損失関数を定義します。 Loss が小さいほど、モデル分類結果は真の値と比較され、より正確になります。モデルの初期パラメーターはすべてゼロであるため、初期損失が発生します。トレーニングの目標は、損失を削減し、グローバル最適解またはローカル最適解を見つけることです。クロスエントロピー損失関数は、分類問題でよく使用されます。 y 予測確率分布、y' 真確率分布 (ラベル ワンホット エンコーディング) は、真の確率分布のモデルの予測の精度を決定します。 cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y),duction_indices=[1]))。プレースホルダーを定義し、実際のラベルを入力します。 tf.reduce_sum は合計を計算し、tf.reduce_mean は各バッチ データ結果の平均を計算します。
最適化アルゴリズム、確率的勾配降下法 SGD (Stochastic Gradient Descent) を定義します。計算グラフに基づく自動導出、バックプロパゲーションアルゴリズムに基づくトレーニング、各ラウンドでのパラメータの反復更新により損失を削減します。 TensorFlow は、バックプロパゲーションと勾配降下法を実装するためにバックグラウンドで操作を自動的に補完するために、カプセル化されたオプティマイザーが提供されます。 train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)。 tf.train.GradientDescentOptimizer を呼び出し、学習速度を 0.5 に設定し、最適化ターゲットのクロスエントロピーを設定して、トレーニング オペレーション train_step を取得します。
tf.global_variables_initializer().run()。 TensorFlow グローバル パラメーター初期化子 tf.golbal_variables_initializer。
batch_xs,batch_ys = mnist.train.next_batch(100)。トレーニング操作 train_step。毎回、トレーニング セットから 100 個のサンプルがランダムに選択されてミニバッチが形成され、プレースホルダーに供給され、train_step トレーニング サンプルが呼び出されます。少数のサンプルをトレーニングに使用すると、確率的勾配降下法により収束が速くなります。すべてのサンプルが毎回トレーニングされるため、大量の計算が必要となり、局所最適値から抜け出すことが困難になります。
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmzx(y_,1))、モデルの精度を検証します。 tf.argmax はテンソルからの最大値シーケンス番号を見つけ、 tf.argmax(y,1) は最大予測数確率を見つけ、 tf.argmax(y_,1) はサンプルの真の数カテゴリを見つけます。 tf.equal は、予測された数値カテゴリが正しいかどうかを判断し、計算分類操作が正しいかどうかを返します。
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))、すべてのサンプルの予測精度をカウントします。 tf.cast は、correct_prediction 出力値の型を変換します。
print(accuracy.eval({x: mnist.test.images,y_: mnist.test.labels}))。データ特性をテストし、入力評価プロセスにラベルを付け、モデル テスト セットの精度を計算します。 Softmax 回帰 MNIST データの分類と認識、テスト セットの平均精度は約 92% です。
TensorFlow は、単純なマシン アルゴリズムのステップを実装します。
1、アルゴリズムの式とニューラル ネットワークの順計算を定義します。
2、損失を定義し、オプティマイザーを選択し、損失を最適化するオプティマイザーを指定します。
3、反復トレーニングデータ。
4、テストセットと検証セットの評価精度。
定義された式は単なる計算グラフであり、計算は run メソッドとフィードデータが呼び出されたときにのみ実行されます。
参考資料:
「TensorFlow実践編」
私のWeChat:qingxingfengzi
、相談料の支払い(1時間あたり150元)を歓迎します🎜以上が研究メモ TF024: TensorFlow は手書きの数字を認識するために Softmax Regression (回帰) を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。