tf.read_file
でファイルを読むと、タイプがtf.string
になります。マニュアルでは「可変長バイト配列です.Tensorの各要素はバイト配列です」としか書かれていません。 (https://www.tensorflow.org/versions/r0.10/resources/dims_types.html)。私はこれをどのように解釈するのか分かりません。TensorFlowの文字列:それらの機能と使用方法
このタイプでは何もできません。通常のPythonでは、my_string[:4]
のようなインデックスで要素を取得できますが、次のコードを実行するとエラーが発生します。
import tensorflow as tf
import numpy as np
x = tf.constant("This is string")
y = x[:4]
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
result = sess.run(y)
print result
それは
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 621, in assert_has_rank raise ValueError("Shape %s must have rank %d" % (self, rank)) ValueError: Shape() must have rank 1
はまた、私はtf.float32
テンソルに私の文字列を変換することはできませんと言います。それは.flo
ファイルであり、魔法のヘッダー "PIEH"を持っています。このnumpyのコードは、このようなヘッダを成功してnumberに変換します(ここではhttps://stackoverflow.com/a/28016469/4744283の例を参照)。しかし、私はtensorflowでそれを行うことはできません。私はtf.string_to_number(string, out_type=tf.float32)
を試しましたが、それは言っています
tensorflow.python.framework.errors.InvalidArgumentError: StringToNumberOp could not correctly convert string: PIEH
だから、どのような文字列ですか?それは何の形ですか?どのようにして少なくとも文字列の一部を取得できますか?もし私がそれの一部を手に入れることができれば、私はちょうど "ピー"の部分をスキップすることができると思います。
UPD:同じエラーでもtf.slice(string, [0], [4])
が動作しないと言いました。
ところで、このスクリプトを使用してtf.stringデータ型受け入れるOPSのリストを取得することができますします。https://要旨を例えば、文字のテンソルとして文字列を解釈するために、次の操作を行うことができます.github.com/yaroslavvb/16bb81fcfb0932169087add47ecb8c3a –
お返事ありがとうございます! TFの特定のバージョン用のスクリプトですか? 0.9以上は動作しません。 0.10に更新しようとします。 – ckorzhik
いいえ、それは0.10 '' '$パイソンlist_ops.py トレースバック(最新の呼び出しの最後)のためにも動作しません: で ファイル "list_ops.py"、23行目、arg.type場合== TF .string: ファイル "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/dtypes.py"、244行目、__eq__ およびself._type_enum == as_dtype(other).as_datatype_enum )as_dtype におけるファイル "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/dtypes.py"、ライン532、キー==のtype_value場合: 例外TypeError:データ入力 を理解しません'' ' 私はそれを修正する手助けはできますか? –
ckorzhik