TFRecordでたくさんの浮動小数点数を扱う
機械学習(TensorFlow)で位置計測っぽいことをやってみた
↑以前このあたりで、TensorFlowでTFRecordのデータセットを自作する時に画像やラベルとしての整数や浮動小数点数を入れたってことはあった。
今回は1つの学習データに浮動小数点数を大量に持たせたい!
これをやったことなく手間取ったのでメモ。
まずは作成から。
numpyのfloatはデフォで64bitある。今回は32bitで十分ってことでfloat32で配列を作る。
これをTFRecord用に出力する。
次にファイルから値を読み込む。

↑こんな具合で扱えるようになった!
↑以前このあたりで、TensorFlowでTFRecordのデータセットを自作する時に画像やラベルとしての整数や浮動小数点数を入れたってことはあった。
今回は1つの学習データに浮動小数点数を大量に持たせたい!
これをやったことなく手間取ったのでメモ。
まずは作成から。
{ import numpy as np arr1 = np.asarray([0.123456789 , 1.2 , 1.3], dtype=np.float32) a = arr1[0] print(a)#0.123457 print(type(a))#numpyを使う。最初値をPythonのリストに詰め込んでたけどうまくいかなかった。何か方法はあるのかもしれないけど。}
numpyのfloatはデフォで64bitある。今回は32bitで十分ってことでfloat32で配列を作る。
これをTFRecord用に出力する。
{ label_n = 1 label_x = 2.0 record = tf.train.Example(features=tf.train.Features(feature={ 'n' : tf.train.Feature(int64_list=tf.train.Int64List(value=[label_n])), 'arr1': tf.train.Feature(bytes_list=tf.train.BytesList(value=[arr1.tobytes()])), 'x': tf.train.Feature(float_list=tf.train.FloatList(value=[label_x])), })) writer.write(record.SerializeToString()) }numpyの配列だとtobytes()ってのがあるからこれで書き出せる。以前やった画像の場合はPILのImageオブジェクトにtobytes()で書き出してたので、同じようにしてみた。
次にファイルから値を読み込む。
{ features = tf.parse_single_example( serialized_example, features={ 'n': tf.FixedLenFeature([], tf.int64), 'arr1': tf.FixedLenFeature([], tf.string), 'x': tf.FixedLenFeature([], tf.float32), }) nn = tf.cast(features['n'], tf.int32) xx = tf.cast(features['x'], tf.float32) arr1 = tf.decode_raw(features['arr1'], tf.float32) arr1.set_shape([3]) }↑これでデータを読み込んで表示させる(これが超絶めんどくさいよね)と、、、

↑こんな具合で扱えるようになった!
スポンサーサイト
<< numpyで値の型を指定したつもりが TopPage 書籍データをiPadのiBooksに持ってくる >>
トラックバック
トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1107-d57f1a60
https://ringsbell.blog.fc2.com/tb.php/1107-d57f1a60