您好,登錄后才能下訂單哦!
這篇文章主要介紹tensorflow之tf.record如何實現存浮點數數組,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
因為最近打算轉戰Tensorflow,我將自己的腦部腫瘤分割課題從caffe轉移到tensorflow上去
然后我將數據存到Tf.record里面去,出現來不收斂,以及精度上不去的等現象。
最終原因是:數據 存入tf.record,我轉為二進制也就是使用來tobytes()函數,再將數據存入tf.record,浮點數以二進制存入會有精度丟失問題。
其實:當發現這個精度上不去的現象之后,我第一反應就是是不是精度丟失,然后上網跟別人交流,告訴我不可能是精度丟失,不信讓我輸出來看,結果我輸出來看后,發現數值確實沒有變化,所以就放棄來這個精度丟失的方向,轉而去找別的方向,結果幾經周折,無果之后,再來嘗試這個,發現,確實是轉為二進制導致來精度丟失(確實浪費來我很多精力,甚至一度想放棄)。
經驗教訓:跟別人交流,一定要保持理性,可以嘗試別人的方法,但是不能丟掉自己的想法,因為沒有人比你自己更了解你的項目。
下面來講講,如何將浮點數組存進tf.record:簡單記錄,不懂可以評論:
import tensorflow as tf import numpy as np def _floats_feature(value): #這里的value=后面沒有括號 #千萬不要寫成return tf.train.Feature(float_list=tf.train.FloatList(value=[value])) return tf.train.Feature(float_list=tf.train.FloatList(value=value)) # data you would like to save, dtype=float32 #這里我生成了一個浮點數數組,來假定作為我的數據 data = np.random.randn(shape=(5, 5)) #這里一定要鋪平,不然存不進去 data = data.flatten() # open tfrecord file writer = tf.python_io.TFRecordWriter(train_data_path) # make train example example = tf.train.Example(features=tf.train.Features( feature={'data': _floats_feature(data)})) # write on the file writer.write(example.SerializeToString())
這就是存數據了,下一步讀取數據,一定要注意將原來鋪平的數據reshape為原來的形狀。
# open tfrecorder reader reader = tf.TFRecordReader() # read file _, serialized_example = reader.read(filename_queue) # read data features = tf.parse_single_example(serialized_example, features={'data': tf.VarLenFeature(tf.float32)}) # make it dense tensor data = tf.sparse_tensor_to_dense(features['data'], default_value=0) # reshape data = tf.reshape(data, [5,5]) return tf.train.batch(data, batch_size, num_threads, capacity)
以上是“tensorflow之tf.record如何實現存浮點數數組”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。