2017-05-08 16 views
0

テンソルフローを使用してシーケンスにシーケンスを書きたいと思います。 私の入力データの形状はテンソルフロー、可変データ長のdecode_csv

であり、それらの長さはすべて異なります。 tf.decode_csvはどのように使用できますか? 最大入力長でrecord_defaultsを作成しようとしました。 しかし、すべての図形はrecord_defaultsで完全に定義されていなければなりません。............ これについてはわかりません。

csv_file = tf.train.string_input_producer([file_name], name='file_name') 
    reader = tf.TextLineReader() 
    _, line = reader.read(csv_file) 
    record_defaults = [[0] for row in range(20)] 
    data = tf.decode_csv(line,record_defaults=record_defaults,field_delim=',') 
    len_error = tf.slice(data,[0],[1]) 
    len_target = tf.slice(data, [1], [1]) 
    error = tf.slice(data,[2],len_error) 
    target = tf.slice(data, 2+len_error , len_target) 
+0

私もこれを試してみましたが、この方法では動作させることができませんでした。あなたの行は、それが動作するように、すべてが最大値と等しい長さでなければならないと確信しています。 Maxのデフォルトを定義しても観測値が少ない行があると、 'expected X observation but got Y'というエラーが出るでしょう。空白をシミュレートするためにCSVファイルに余分な '、'があるようなものがあるかもしれません。自分自身を試していない。私はしばしば、numpy/pandasのようなTFの外のテキストファイルを読むのは簡単ですが、TFに値を送りますが、この方法で素敵なTFシャッフルと複数のファイルクエスチョンが失われます。 –

+0

うわー....あなたはとても親切です。別のファイルタイプを試してみる必要があります。本当にありがとう – Amily

答えて

1

はい、tf.decode_csvではすべての行が同じサイズである必要があります。これがうまくいかない場合は、Githubで機能要求を提出することを検討してください。

CSVファイルを前処理して、すべてのエントリを同じ数の列に埋め込むこともできます。 record_defaults引数をtf.decode_csvに使用すると、フィールドを空のままにしてデフォルト値を指定できます。

関連する問題