2016-12-30 9 views
5

tfrecordsファイルにcsvファイル(すべての列は浮動小数点数)を書き込もうとしています。私が見たすべての例では、csv列をパックしてからsess.run()に直接フィードしますが、機能列とラベル列をtfrecordに書き込む方法はわかりません。どうすればこのことができますか?Tensorflowは、csvからtfrecordsファイルを作成します。

+1

私の記事はあなたの質問に答えますか? – standy

+0

はい、申し訳ありませんが、私は最近とても忙しかったです。助けてくれてありがとう! – Nitro

答えて

13

csvファイルをTFRecordsに変換するには、別のスクリプトが必要です。

次のヘッダーでCSVを持って想像:

feature_1, feature_2, ..., feature_n, label 

あなたは、pandasのようなものを使用してCSVを読んで、手動でtf.train.Exampleを構築し、その後TFRecordWriter

csv = pandas.read_csv("your.csv").values 
with tf.python_io.TFRecordWriter("csv.tfrecords") as writer: 
    for row in csv: 
     features, label = row[:-1], row[-1] 
     example = tf.train.Example() 
     example.features.feature["features"].float_list.value.extend(features) 
     example.features.feature["label"].int64_list.value.append(label) 
     writer.write(example.SerializeToString()) 
-1
def convert_to(): 
filename = os.path.join(wdir, 'ml-100k' + '.tfrecords') 
print('Writing', filename) 
with tf.python_io.TFRecordWriter(filename) as writer: 
    with open("/Users/shishir/Documents/botconnect_Playground/tfRecords/ml-100k.train.rating", "r") as f: 
     line = f.readline() 
     while line != None and line != "": 
      arr = line.split("\t") 
      u, i, l = int(arr[0]), int(arr[1]), int(arr[2]) 
      u_arr = np.reshape(u,[1]).astype('int64') 
      i_arr = np.reshape(i,[1]).astype('int64') 
      l_arr = np.reshape(l,[1]).astype('int64') 
      example = tf.train.Example() 
      example.features.feature["user"].int64_list.value.extend(u_arr) 
      example.features.feature["item"].int64_list.value.extend(i_arr) 
      example.features.feature["label"].int64_list.value.append(int(l_arr)) 
      writer.write(example.SerializeToString()) 
      line = f.readline() 
のファイルにそれを書く必要があります

これは私のソリューションであり、動作します!これが欲しいと思っています

乾杯。

+0

このコードスニペットをご利用いただき、ありがとうございます。適切な説明(* meta.stackexchange.com/q/114762)は、*なぜ*これが問題の良い解決策であるかを示すことで長期的な価値を向上させ、将来の読者にとって他の同様の質問。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 –

関連する問題