TensorFlow がランダム トレーニングとバッチ トレーニングを実装する方法
この記事では主に TensorFlow がランダム トレーニングとバッチ トレーニングを実装する方法を紹介し、参考として提供します。ぜひ一緒に見てみましょう
TensorFlow はモデル変数を更新します。一度に 1 つのデータ ポイントを操作することも、一度に大量のデータを操作することもできます。単一のトレーニング サンプルを操作すると、「奇妙な」学習プロセスが発生する可能性がありますが、大規模なバッチを使用したトレーニングでは計算コストが高くなる可能性があります。どのタイプのトレーニングを選択するかは、機械学習アルゴリズムの収束にとって非常に重要です。
TensorFlow がバックプロパゲーションを機能させるための変数勾配を計算するには、1 つ以上のサンプルで損失を測定する必要があります。
ランダム トレーニングでは、トレーニング データとターゲット データのペアをランダムにサンプリングしてトレーニングを完了します。別のオプションは、大規模なバッチ トレーニングでの勾配計算の損失を平均することであり、バッチ トレーニングのサイズを一度にデータ セット全体に拡張できます。ここでは、ランダム トレーニングとバッチ トレーニングを使用して、回帰アルゴリズムの前述の例を拡張する方法を示します。
バッチトレーニングとランダムトレーニングの違いは、オプティマイザーメソッドと収束です。
# 随机训练和批量训练 #---------------------------------- # # This python function illustrates two different training methods: # batch and stochastic training. For each model, we will use # a regression model that predicts one model variable. import matplotlib.pyplot as plt import numpy as np import tensorflow as tf from tensorflow.python.framework import ops ops.reset_default_graph() # 随机训练: # Create graph sess = tf.Session() # 声明数据 x_vals = np.random.normal(1, 0.1, 100) y_vals = np.repeat(10., 100) x_data = tf.placeholder(shape=[1], dtype=tf.float32) y_target = tf.placeholder(shape=[1], dtype=tf.float32) # 声明变量 (one model parameter = A) A = tf.Variable(tf.random_normal(shape=[1])) # 增加操作到图 my_output = tf.multiply(x_data, A) # 增加L2损失函数 loss = tf.square(my_output - y_target) # 初始化变量 init = tf.global_variables_initializer() sess.run(init) # 声明优化器 my_opt = tf.train.GradientDescentOptimizer(0.02) train_step = my_opt.minimize(loss) loss_stochastic = [] # 运行迭代 for i in range(100): rand_index = np.random.choice(100) rand_x = [x_vals[rand_index]] rand_y = [y_vals[rand_index]] sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y}) if (i+1)%5==0: print('Step #' + str(i+1) + ' A = ' + str(sess.run(A))) temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y}) print('Loss = ' + str(temp_loss)) loss_stochastic.append(temp_loss) # 批量训练: # 重置计算图 ops.reset_default_graph() sess = tf.Session() # 声明批量大小 # 批量大小是指通过计算图一次传入多少训练数据 batch_size = 20 # 声明模型的数据、占位符 x_vals = np.random.normal(1, 0.1, 100) y_vals = np.repeat(10., 100) x_data = tf.placeholder(shape=[None, 1], dtype=tf.float32) y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32) # 声明变量 (one model parameter = A) A = tf.Variable(tf.random_normal(shape=[1,1])) # 增加矩阵乘法操作(矩阵乘法不满足交换律) my_output = tf.matmul(x_data, A) # 增加损失函数 # 批量训练时损失函数是每个数据点L2损失的平均值 loss = tf.reduce_mean(tf.square(my_output - y_target)) # 初始化变量 init = tf.global_variables_initializer() sess.run(init) # 声明优化器 my_opt = tf.train.GradientDescentOptimizer(0.02) train_step = my_opt.minimize(loss) loss_batch = [] # 运行迭代 for i in range(100): rand_index = np.random.choice(100, size=batch_size) rand_x = np.transpose([x_vals[rand_index]]) rand_y = np.transpose([y_vals[rand_index]]) sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y}) if (i+1)%5==0: print('Step #' + str(i+1) + ' A = ' + str(sess.run(A))) temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y}) print('Loss = ' + str(temp_loss)) loss_batch.append(temp_loss) plt.plot(range(0, 100, 5), loss_stochastic, 'b-', label='Stochastic Loss') plt.plot(range(0, 100, 5), loss_batch, 'r--', label='Batch Loss, size=20') plt.legend(loc='upper right', prop={'size': 11}) plt.show()
出力:
ステップ #5 A = [ 1.47604525]
損失 = [ 72.55678558]
ステップ #10 A = [ 3.01128507]
損失 = [ 48.22986 221]
ステップ #15 A = [4.27042341 ]
損失 = [ 28.97912598]
ステップ #20 A = [ 5.2984333]
損失 = [ 16.44779968]
ステップ #25 A = [ 6.17473984]
損失 = [ 16.373312]
ステップ #30 A = [ 6 .89866304]
損失= [ 11.71054649 ]
ステップ #35 A = [ 7.39849901]
損失 = [ 6.42773056]
ステップ #40 A = [ 7.84618378]
ステップ #45 A = [ 8.1570978 2]
損失 = [ 0 .2142024 ]
ステップ #50 A = [ 8.54818344]
損失 = [ 7.11651039]
ステップ #55 A = [ 8.82354641]
損失 = [ 1.47823763]
ステップ #60 A = [ 9.07896614]
損失 = [ 8244276 ]
ステップ #65 A = [ 9.24868107]
損失 = [ 0.01143846]
ステップ #70 A = [ 9.36772251]
損失 = [ 2.10078788]
ステップ #75 A = [ 9.49171734]
損失 = [ 3.90913701]
ステップ #80 A = [ 9 . 6622715]
損失 = [ 4.80727625 ]
ステップ #85 A = [ 9.73786926]
損失 = [ 0.39915398]
ステップ #90 A = [ 9.81853104]
損失 = [ 0.14876099]
ステップ #9 5 A = [ 9.90371323]
損失 = [ 0 .01657014]
ステップ #100 A = [9.86669159]
損失 = [ 0.444787]
ステップ #5 A = [[ 2.34371352]]
損失 = 58.766
ステップ #10 A = [[ 3.74766445]]
損失 = 38.4875
ステップ #15 A = [[ 4.88928795 ]]
損失 = 27.5632
ステップ #20 A = [[ 5.82038736]]
損失 = 17.9523
ステップ #25 A = [[ 6.58999157]]
損失 = 13.3245
ステップ #30 A = [[ 7.20851326 ]]
損失 = 8.68099
ステップ #35 A = [[ 7.71694899]]
損失 = 4.60659
ステップ #40 A = [[ 8.1296711]]
損失 = 4.70107
ステップ #45 A = [[ 8.47107315] ]
損失 = 3.28318
ステップ #50 A = [[ 8.74283409]]
損失 = 1.99057
ステップ #55 A = [[ 8.98811722]]
損失 = 2.66906
ステップ #60 A = [[ 9.18062305]]
損失 = 3.26207
ステップ #65 A = [[ 9.31655025 ]]
損失 = 2.55459
ステップ #70 A = [[ 9.43130589]]
損失 = 1.95839
ステップ #75 A = [[ 9.55670166]]
損失 = 1.46504
ステップ #80 A = [[ 9.6354847] ]
損失 = 1.49021
ステップ #85 A = [[ 9.73470974]]
損失 = 1.53289
ステップ #90 A = [[ 9.77956581]]
損失 = 1.52173
ステップ #95 A = [[ 9.83666706] ]
損失 = 0.819207
ステップ #100 A = [[ 9.85569191]]
損失 = 1.2197
利点 | 欠点 | |
---|---|---|
極小値から外れています | 一般に更新が必要です 収束するまでに複数回の反復が必要です | |
最小限の損失を迅速に取得します | より多くのコンピューティングリソースを消費します |
A tensorflow1.0 プーリング層 (プーリング) と完全な接続層 (密) についての簡単な説明
Tensorflow モデルの保存と復元についての簡単な説明
以上がTensorFlow がランダム トレーニングとバッチ トレーニングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









0.この記事は何をするのですか?私たちは、多用途かつ高速な最先端の生成単眼深度推定モデルである DepthFM を提案します。従来の深度推定タスクに加えて、DepthFM は深度修復などの下流タスクでも最先端の機能を実証します。 DepthFM は効率的で、いくつかの推論ステップ内で深度マップを合成できます。この作品について一緒に読みましょう〜 1. 論文情報タイトル: DepthFM: FastMonocularDepthEstimationwithFlowMatching 著者: MingGui、JohannesS.Fischer、UlrichPrestel、PingchuanMa、Dmytr

現在のディープ エッジ検出ネットワークは通常、エンコーダ/デコーダ アーキテクチャを採用しています。このアーキテクチャには、マルチレベルの特徴をより適切に抽出するためのアップ サンプリング モジュールとダウン サンプリング モジュールが含まれています。ただし、この構造では、ネットワークが正確かつ詳細なエッジ検出結果を出力することが制限されます。この問題に対して、AAAI2024 に関する論文は新しい解決策を提供しています。論文のタイトル: DiffusionEdge:DiffusionProbabilisticModelforCrispEdgeDetection 著者: Ye Yunfan (国立国防技術大学)、Xu Kai (国立国防技術大学)、Huang Yuxing (国立国防技術大学)、Yi Renjiao (国立国防技術大学)、Cai Zhiping (防衛工科大学) 論文リンク:https://ar

春節に合わせて、Tongyi Qianwen Model (Qwen) のバージョン 1.5 がオンラインになりました。今朝、新しいバージョンのニュースが AI コミュニティの注目を集めました。大型モデルの新バージョンには、0.5B、1.8B、4B、7B、14B、72Bの6つのモデルサイズが含まれています。その中でも最強バージョンの性能はGPT3.5やMistral-Mediumを上回ります。このバージョンには Base モデルと Chat モデルが含まれており、多言語サポートを提供します。アリババの同義前文チームは、関連技術が同義前文公式ウェブサイトと同義前文アプリでもリリースされたと述べた。さらに、本日の Qwen 1.5 リリースには、32K のコンテキスト長のサポート、Base+Chat モデルのチェックポイントのオープン、および 32K のコンテキスト長のサポートなどのハイライトもあります。

大規模言語モデル (LLM) には通常、数十億のパラメーターがあり、数兆のトークンでトレーニングされます。ただし、このようなモデルのトレーニングとデプロイには非常にコストがかかります。計算要件を軽減するために、さまざまなモデル圧縮技術がよく使用されます。これらのモデル圧縮技術は一般に、蒸留、テンソル分解 (低ランク因数分解を含む)、枝刈り、および量子化の 4 つのカテゴリに分類できます。プルーニング手法は以前から存在していましたが、多くはパフォーマンスを維持するためにプルーニング後にリカバリ微調整 (RFT) を必要とするため、プロセス全体のコストが高くつき、拡張が困難になります。チューリッヒ工科大学とマイクロソフトの研究者は、この問題に対する SliceGPT と呼ばれる解決策を提案しました。この方法の中心となるアイデアは、重み行列の行と列を削除することでネットワークの埋め込みを減らすことです。

Boston Dynamics Atlas は正式に電動ロボットの時代に突入します!昨日、油圧式アトラスが歴史の舞台から「涙ながらに」撤退したばかりですが、今日、ボストン・ダイナミクスは電動式アトラスが稼働することを発表しました。ボストン・ダイナミクス社は商用人型ロボットの分野でテスラ社と競争する決意を持っているようだ。新しいビデオが公開されてから、わずか 10 時間ですでに 100 万人以上が視聴しました。古い人が去り、新しい役割が現れるのは歴史的な必然です。今年が人型ロボットの爆発的な年であることは間違いありません。ネットユーザーは「ロボットの進歩により、今年の開会式は人間のように見え、人間よりもはるかに自由度が高い。しかし、これは本当にホラー映画ではないのか?」とコメントした。ビデオの冒頭では、アトラスは仰向けに見えるように地面に静かに横たわっています。次に続くのは驚くべきことです

昨年 4 月、ウィスコンシン大学マディソン校、マイクロソフト リサーチ、コロンビア大学の研究者が共同で LLaVA (Large Language and Vision Assistant) をリリースしました。 LLaVA は小規模なマルチモーダル命令データセットでのみトレーニングされていますが、一部のサンプルでは GPT-4 と非常によく似た推論結果を示します。その後 10 月に、オリジナルの LLaVA に簡単な変更を加えて 11 のベンチマークの SOTA を更新した LLaVA-1.5 をリリースしました。このアップグレードの結果は非常に刺激的で、マルチモーダル AI アシスタントの分野に新たなブレークスルーをもたらします。研究チームは、推論、OCR、および

世界は狂ったように大きなモデルを構築していますが、インターネット上のデータだけではまったく不十分です。このトレーニング モデルは「ハンガー ゲーム」のようであり、世界中の AI 研究者は、データを貪欲に食べる人たちにどのように餌を与えるかを心配しています。この問題は、マルチモーダル タスクで特に顕著です。何もできなかった当時、中国人民大学学部のスタートアップチームは、独自の新しいモデルを使用して、中国で初めて「モデル生成データフィード自体」を実現しました。さらに、これは理解側と生成側の 2 つの側面からのアプローチであり、両方の側で高品質のマルチモーダルな新しいデータを生成し、モデル自体にデータのフィードバックを提供できます。モデルとは何ですか? Awaker 1.0 は、中関村フォーラムに登場したばかりの大型マルチモーダル モデルです。チームは誰ですか?ソフォンエンジン。人民大学ヒルハウス人工知能大学院の博士課程学生、ガオ・イージャオ氏によって設立されました。

何?ズートピアは国産AIによって実現するのか?ビデオとともに公開されたのは、「Keling」と呼ばれる新しい大規模な国産ビデオ生成モデルです。 Sora も同様の技術的ルートを使用し、自社開発の技術革新を多数組み合わせて、大きく合理的な動きをするだけでなく、物理世界の特性をシミュレートし、強力な概念的結合能力と想像力を備えたビデオを制作します。データによると、Keling は、最大 1080p の解像度で 30fps で最大 2 分の超長時間ビデオの生成をサポートし、複数のアスペクト比をサポートします。もう 1 つの重要な点は、Keling は研究所が公開したデモやビデオ結果のデモンストレーションではなく、ショートビデオ分野のリーダーである Kuaishou が立ち上げた製品レベルのアプリケーションであるということです。さらに、主な焦点は実用的であり、白紙小切手を書かず、リリースされたらすぐにオンラインに移行することです。Ke Ling の大型モデルは Kuaiying でリリースされました。
