単純な密なTensorflowグラフをプログラムで再利用するにはどうすればよいですか?

sutej kulgod

私はTensorflowを初めて使用し、単純なプログラムを使用して高密度レイヤーを保存および復元する方法を見つけようとしていました。次の簡単なプログラムを使用して、グラフを初期化して保存しました。

from __future__ import absolute_import, division, print_function

import os

import tensorflow as tf

x = tf.constant([[1], [2], [3], [4]], dtype=tf.float32,name = "x" )
y_true = tf.constant([[0], [-1], [-2], [-3]], dtype=tf.float32, name = "y_t")

linear_model = tf.layers.Dense(units=1, name = "sutej")

y_pred = linear_model(x)
loss = tf.losses.mean_squared_error(labels=y_true, predictions=y_pred)

optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

init = tf.global_variables_initializer()

sess = tf.Session()
sess.run(init)

for i in range(1000):
  _, loss_value = sess.run((train, loss))
  print(loss_value)

all_vars = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)
print(all_vars)
for v in all_vars:
    v_ = sess.run(v)
    print(v_)

print(sess.run(y_pred))

saver = tf.train.Saver()

saver.save(sess, '/home/sutej/Tensorflow/newsave/newsave',global_step=1000)

そして、グラフを復元するための次のコード

from __future__ import absolute_import, division, print_function

import os

import tensorflow as tf

sess = tf.Session()
saver = tf.train.import_meta_graph('/home/sutej/Tensorflow/newsave/newsave-1000.meta')
saver.restore(sess,tf.train.latest_checkpoint('/home/sutej/Tensorflow/newsave/'))

graph = tf.get_default_graph()
x=graph.get_tensor_by_name('x:0')
y_true=graph.get_tensor_by_name('y_t:0')

graph = tf.get_default_graph()

all_vars = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)
print(all_vars)
for v in all_vars:
    v_ = sess.run(v)
    print(v_)

print(sess.run('sutej/kernel:0'))


print(sess.run(tf.layers.dense(inputs=x,units=1,name = 'sutej', reuse=True)))

出力では、グラフが復元され、保存されたファイルの定数、バイアス、重みが復元されていることがわかります。しかし、入力を高密度レイヤー(復元コードの最後の行)に渡そうとすると、エラーが発生します。出力ログは以下のとおりです。

[<tf.Variable 'sutej/kernel:0' shape=(1, 1) dtype=float32_ref>, <tf.Variable 'sutej/bias:0' shape=(1,) dtype=float32_ref>]
[[-0.98440635]]
[0.95415276]
[[-0.98440635]]
Traceback (most recent call last):
  File "load_saver.py", line 26, in <module>
    print(sess.run(tf.layers.dense(inputs=x,units=1,name = 'sutej', reuse=True)))
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/layers/core.py", line 253, in dense
    return layer.apply(inputs)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 828, in apply
    return self.__call__(inputs, *args, **kwargs)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 699, in __call__
    self.build(input_shapes)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/layers/core.py", line 138, in build
    trainable=True)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 546, in add_variable
    partitioner=partitioner)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/training/checkpointable.py", line 436, in _add_variable_with_custom_getter
    **kwargs_for_getter)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/ops/variable_scope.py", line 1317, in get_variable
    constraint=constraint)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/ops/variable_scope.py", line 1079, in get_variable
    constraint=constraint)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/ops/variable_scope.py", line 425, in get_variable
    constraint=constraint)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/ops/variable_scope.py", line 394, in _true_getter
    use_resource=use_resource, constraint=constraint)
  File "/home/sutej/.local/lib/python3.5/site-packages/tensorflow/python/ops/variable_scope.py", line 751, in _get_single_variable
    "reuse=tf.AUTO_REUSE in VarScope?" % name)
ValueError: Variable sutej/kernel does not exist, or was not created with tf.get_variable(). Did you mean to set reuse=tf.AUTO_REUSE in VarScope?

私が間違っているのは何ですか?そして、どうすればそれを回避できますか?カーネルを手動で乗算してバイアスを追加したくはありませんprint(sess.run(y_pred))が、コードの最初の部分のように、よりエレガントなものを探しています。

お手伝いありがとう。

年齢

あなたが望むこと---print(sess.run(y_pred))はまさにあなたが復元後にすべきことです。グラフをインポートし、変数を復元しました。TensorFlowの世界は、トレーニングスクリプトでの状態とほぼ同じです。トレーニングスクリプトで実行するのと同じ方法でグラフを実行できます。

あなたの理解を少し進めるために。を呼び出すとtf.layers.dense、変数と操作が作成されます(グラフではノードとして表されます)。このため、トレーニングスクリプトでそれを呼び出しました。グラフをインポートして変数値を復元すると、変数と操作が作成されます。tf.layers.denseもう一度呼び出すのはほとんど意味がありません。

sess.run()文字列を使用して呼び出し試みたところ、テンソルオブジェクトを渡す必要があるため、機能しませんでした。必要なテンソルを取得するには、いくつかの方法があります。

  • get_tensor_by_nameあなたがしたように使用します。モデルで作業するときにテンソル名が変わる可能性があるため、これは少し脆弱です。
  • collectionグラフを保存する前にテンソルをa追加し、復元時にこのコレクションからテンソルを取得できます。コレクション名は、テンソル名よりも安定している必要があります。
  • グラフを作成するコード(つまり、トレーニングスクリプト)がある場合。そのコードを使用して、同じグラフを再作成できます。次に、y_predトレーニング中に持っていたのと同じpythonオブジェクトがあります。この場合、復元スクリプトを変更する必要があります。コードを使用してグラフを作成したので、する必要はありませんimport_meta_graph_def変数値を復元する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログラムで再利用可能なカスタムビューを追加するにはどうすればよいですか?(迅速)

分類Dev

XCodeで純粋なGUIwxwigetsプログラムを開発するにはどうすればよいですか?

分類Dev

Tensorflowで入力変数と出力変数を使用して再利用可能なグラフを作成するにはどうすればよいですか?

分類Dev

この単純なPythonログインプログラムをループさせるにはどうすればよいですか?

分類Dev

この単純なMahoutプログラムを例外なしでビルド/実行するにはどうすればよいですか?

分類Dev

Teechartで単純なXYデータをグラフ化するにはどうすればよいですか?

分類Dev

AngularJSで簡単なHelloWorldプログラムを作成するにはどうすればよいですか?

分類Dev

この単純なプログラムをJAVAで修正するにはどうすればよいですか?予想ゲーム

分類Dev

Gitlabで単純なHelloWorldプログラム用にgitlab-ci.ymlを構成するにはどうすればよいですか?

分類Dev

GET / POSTリクエストをプログラムで単純なASPXページに送信するにはどうすればよいですか?

分類Dev

単純なプログラムをJavaでHashMapに変換するにはどうすればよいですか?

分類Dev

この単純なプログラムを修正するにはどうすればよいですか?予想ゲーム

分類Dev

1つのファイルで宣言され、他のファイルから呼び出されるPHPのパラメーターを使用して、再利用可能な関数をプログラムするにはどうすればよいですか?

分類Dev

jmeterでテストフラグメントを再利用するにはどうすればよいですか?

分類Dev

APLプログラミング-単純な行列を画像に変換するにはどうすればよいですか?

分類Dev

この単純なCプログラムを最初からやり直すにはどうすればよいですか?

分類Dev

この単純なプログラムを閉じずに戻すにはどうすればよいですか?

分類Dev

単純な.dartファイルからプラグインを作成してFlutterで使用するにはどうすればよいですか?

分類Dev

データが更新されたときに再利用可能なd3.jsグラフを更新するにはどうすればよいですか?

分類Dev

変数なしでプログラムでdplyrcross()を使用するにはどうすればよいですか?

分類Dev

単純なGoogle折れ線グラフで値の範囲ごとに異なる色を使用するにはどうすればよいですか?

分類Dev

C / C ++コードから現在利用可能なメモリ量をプログラムで取得するにはどうすればよいですか?

分類Dev

誰もいないプログラムを実行するにはどうすればよいですか?

分類Dev

誰もいないプログラムを実行するにはどうすればよいですか?

分類Dev

PLCなしでTwincatプログラムを実行するにはどうすればよいですか?

分類Dev

プログラムで基本的なUIButtonを作成するにはどうすればよいですか?

分類Dev

Pythonでボタンをプログラムするにはどうすればよいですか(Tkinterなし)?

分類Dev

Cプログラムで適切な出力を取得するにはどうすればよいですか?

分類Dev

利用可能なGoogleBigQueryの場所をプログラムで一覧表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    プログラムで再利用可能なカスタムビューを追加するにはどうすればよいですか?(迅速)

  2. 2

    XCodeで純粋なGUIwxwigetsプログラムを開発するにはどうすればよいですか?

  3. 3

    Tensorflowで入力変数と出力変数を使用して再利用可能なグラフを作成するにはどうすればよいですか?

  4. 4

    この単純なPythonログインプログラムをループさせるにはどうすればよいですか?

  5. 5

    この単純なMahoutプログラムを例外なしでビルド/実行するにはどうすればよいですか?

  6. 6

    Teechartで単純なXYデータをグラフ化するにはどうすればよいですか?

  7. 7

    AngularJSで簡単なHelloWorldプログラムを作成するにはどうすればよいですか?

  8. 8

    この単純なプログラムをJAVAで修正するにはどうすればよいですか?予想ゲーム

  9. 9

    Gitlabで単純なHelloWorldプログラム用にgitlab-ci.ymlを構成するにはどうすればよいですか?

  10. 10

    GET / POSTリクエストをプログラムで単純なASPXページに送信するにはどうすればよいですか?

  11. 11

    単純なプログラムをJavaでHashMapに変換するにはどうすればよいですか?

  12. 12

    この単純なプログラムを修正するにはどうすればよいですか?予想ゲーム

  13. 13

    1つのファイルで宣言され、他のファイルから呼び出されるPHPのパラメーターを使用して、再利用可能な関数をプログラムするにはどうすればよいですか?

  14. 14

    jmeterでテストフラグメントを再利用するにはどうすればよいですか?

  15. 15

    APLプログラミング-単純な行列を画像に変換するにはどうすればよいですか?

  16. 16

    この単純なCプログラムを最初からやり直すにはどうすればよいですか?

  17. 17

    この単純なプログラムを閉じずに戻すにはどうすればよいですか?

  18. 18

    単純な.dartファイルからプラグインを作成してFlutterで使用するにはどうすればよいですか?

  19. 19

    データが更新されたときに再利用可能なd3.jsグラフを更新するにはどうすればよいですか?

  20. 20

    変数なしでプログラムでdplyrcross()を使用するにはどうすればよいですか?

  21. 21

    単純なGoogle折れ線グラフで値の範囲ごとに異なる色を使用するにはどうすればよいですか?

  22. 22

    C / C ++コードから現在利用可能なメモリ量をプログラムで取得するにはどうすればよいですか?

  23. 23

    誰もいないプログラムを実行するにはどうすればよいですか?

  24. 24

    誰もいないプログラムを実行するにはどうすればよいですか?

  25. 25

    PLCなしでTwincatプログラムを実行するにはどうすればよいですか?

  26. 26

    プログラムで基本的なUIButtonを作成するにはどうすればよいですか?

  27. 27

    Pythonでボタンをプログラムするにはどうすればよいですか(Tkinterなし)?

  28. 28

    Cプログラムで適切な出力を取得するにはどうすればよいですか?

  29. 29

    利用可能なGoogleBigQueryの場所をプログラムで一覧表示するにはどうすればよいですか?

ホットタグ

アーカイブ