TensorFlow tutorialは、作成時にテンソルの形状を指定する必要があると言います。その形は自動的にテンソルの形になります。また、TensorFlowは変数を再構成する高度なメカニズムを提供しています。どうやってやるの?任意のコード例?TensorFlowで変数の形状を変更するにはどうすればよいですか?
答えて
TensorFlowのドキュメントのshapes-and-shapingをご覧ください。利用可能なさまざまな形状変換について説明します。
最も一般的な機能は、そのnumpyの同等に類似している、おそらくtf.reshapeです。要素の数が同じであれば、任意の図形を指定できます。マニュアルにはいくつかの例があります。
Documentation shows再形成のための方法。それらは:
- は
- スクイーズ(テンソルの形状と大きさ1の寸法を除去)
- expand_dims(サイズ1の寸法を加算)
ならびに方法の束を整形しますあなたのテンソルの、size
、rank
を取得します。おそらく最も使用はreshape
であり、ここでエッジケースのカップル(-1)とのコードの例です:
import tensorflow as tf
v1 = tf.Variable([
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
])
v2 = tf.reshape(v1, [2, 6])
v3 = tf.reshape(v1, [2, 2, -1])
v4 = tf.reshape(v1, [-1])
# v5 = tf.reshape(v1, [2, 4, -1]) will fail, because you can not find such an integer for -1
v6 = tf.reshape(v1, [1, 4, 1, 3, 1])
v6_shape = tf.shape(v6)
v6_squeezed = tf.squeeze(v6)
v6_squeezed_shape = tf.shape(v6_squeezed)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
a, b, c, d, e, f, g = sess.run([v2, v3, v4, v6, v6_shape, v6_squeezed, v6_squeezed_shape])
# print all variables to see what is there
print e # shape of v6
print g # shape of v6_squeezed
tf.Variable
クラスは、変数を作成するための推奨される方法ですが、それは形状を変更する能力を制限し変数が作成されると、その変数のこの機能は、文書化され、公開APIになっていないことを
var = tf.Variable(tf.placeholder(tf.float32))
# ...
new_value = ... # Tensor or numpy array.
change_shape_op = tf.assign(var, new_value, validate_shape=False)
# ...
sess.run(change_shape_op) # Changes the shape of `var` to new_value's shape.
注:変数の形状を変更する必要がある場合は、次の(32ビット浮動小数点テンソル用など)を行うことができます
ので、変更される場合があります。あなた自身がこの機能を使用する必要が発見した場合は、私たちに知らせて、我々は前進し、それをサポートするための方法を調べることができます。
tf.Variable(tf.placeholder(tf.float32))
はPythonシェルでtensorflow 1.2.1
で有効ではありません。
import tensorflow as tf
tf.Variable(tf.placeholder(tf.float32))
あなたが取得します:
ValueError: initial_value must have a shape specified: Tensor("Placeholder:0", dtype=float32)
アップデート:あなたがvalidate_shape=False
を追加した場合、そこになります何のエラーもありません。
tf.Variable(tf.placeholder(tf.float32), validate_shape=False)
tf.py_func
はあなたの条件に一致した場合:
def init():
return numpy.random.rand(2,3)
a = tf.pyfun(init, [], tf.float32)
あなたがあなた自身のinit関数を渡すことで任意の形状を持つ変数を作成することができます。
別の方法:あなたがnumpyの配列を返すtf.constant
またはinit
関数を渡すことができ
var = tf.get_varible('my-name', initializer=init, shape=(1,1))
。提供された形状は検証されません。出力形状は実際のデータ形状です。
- 1. 変形スティックを変更するにはどうすればよいですか?
- 2. 変形/小胞の形でラベルの内容を変更するにはどうすればよいですか?
- 3. PyQtでカーソルの形状を変更するにはどうすればよいですか?
- 4. QWSでカーソルの形状を変更するにはどうすればよいですか?
- 5. RadioButton:IsChecked状態を変更するにはどうすればよいですか?
- 6. UISegementedControlの形状を変更するにはどうすればよいですか?
- 7. TensorFlowでサイズ変更されたイメージを描画するにはどうすればよいですか?
- 8. C#でxml形式のキーペアをPEM形式に変更するにはどうすればよいですか?
- 9. TensorFlow変数で損失の勾配を取得するにはどうすればよいですか?
- 10. 楕円形の放射状グラデーションを変更するにはどうすればいいですか?
- 11. csvファイルのTensorFlowのdtypeを変更するにはどうすればよいですか?
- 12. UISwitchが状態を変更しないようにするにはどうすればよいですか?
- 13. 形状ファイルの種類をポリラインからポリゴンに変換するにはどうすればよいですか?
- 14. UISearchBarを四角形から四角形に変更するにはどうすればよいですか?
- 15. ブラウザの更新時に状態を変更するにはどうすればよいですか?
- 16. Javaで長い変数をタイムスタンプに変更するにはどうすればよいですか?
- 17. C#でクラス外の変数を変更するにはどうすればよいですか?
- 18. OCamlで変数の値を保存して変更するにはどうすればよいですか?
- 19. 特定の形式の数値を整数に変換するにはどうすればよいですか?
- 20. WinDbgのcmd行から変数の値を変更するにはどうすればよいですか?
- 21. トグルボタンの状態をプログラムで変更するにはどうすればよいですか?
- 22. WinFormsでToolStripItemのチェック状態を変更するにはどうすればよいですか?
- 23. VBスクリプトのファイルURLの名前を変数に変更するにはどうすればよいですか?
- 24. Androidのソースコードからデバイスのネットワーク状態を変更するにはどうすればよいですか?
- 25. メソッド内から変数の値を変更するにはどうすればよいですか?
- 26. NServiceBusでMSMQ応答キュー名の形式を変更するにはどうすればよいですか?
- 27. オーバービューマップ(Google Maps v3)で四角形の色を変更するにはどうすればよいですか?
- 28. fullcalendarで列の時刻形式を変更するにはどうすればよいですか?
- 29. VSTOプロジェクトでExcelの形式を変更するにはどうすればよいですか?
- 30. 線形レイアウトでビューの位置を変更するにはどうすればよいですか?
このアプローチの問題は、それに応じて 'var.shape'が更新されないということです。これは、チェックポイントを格納するときにも維持され、可変シェイプがウェイトシェイプと一致しないため、チェックポイントの読み込みを再度禁止します。 'var.shape'に強制的に更新させる方法はありますか?私はGitHubの問題を作成する必要がありますか? –
このスレッドで問題を議論しました:https://github.com/tensorflow/tensorflow/issues/10091#issuecomment-304301817 しかし、既存のネットワークの重みを拡張する方法があるのだろうか –