頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


TFRecordでたくさんの浮動小数点数を扱う

機械学習(TensorFlow)で位置計測っぽいことをやってみた

↑以前このあたりで、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
http://ringsbell.blog117.fc2.com/tb.php/1107-d57f1a60




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad