tensorflow之tf.record實現(xiàn)存浮點數(shù)數(shù)組
因為最近打算轉(zhuǎn)戰(zhàn)Tensorflow,我將自己的腦部腫瘤分割課題從caffe轉(zhuǎn)移到tensorflow上去
然后我將數(shù)據(jù)存到Tf.record里面去,出現(xiàn)來不收斂,以及精度上不去的等現(xiàn)象。
最終原因是:數(shù)據(jù) 存入tf.record,我轉(zhuǎn)為二進制也就是使用來tobytes()函數(shù),再將數(shù)據(jù)存入tf.record,浮點數(shù)以二進制存入會有精度丟失問題。
其實:當(dāng)發(fā)現(xiàn)這個精度上不去的現(xiàn)象之后,我第一反應(yīng)就是是不是精度丟失,然后上網(wǎng)跟別人交流,告訴我不可能是精度丟失,不信讓我輸出來看,結(jié)果我輸出來看后,發(fā)現(xiàn)數(shù)值確實沒有變化,所以就放棄來這個精度丟失的方向,轉(zhuǎn)而去找別的方向,結(jié)果幾經(jīng)周折,無果之后,再來嘗試這個,發(fā)現(xiàn),確實是轉(zhuǎn)為二進制導(dǎo)致來精度丟失(確實浪費來我很多精力,甚至一度想放棄)。
經(jīng)驗教訓(xùn):跟別人交流,一定要保持理性,可以嘗試別人的方法,但是不能丟掉自己的想法,因為沒有人比你自己更了解你的項目。
下面來講講,如何將浮點數(shù)組存進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 #這里我生成了一個浮點數(shù)數(shù)組,來假定作為我的數(shù)據(jù) 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())
這就是存數(shù)據(jù)了,下一步讀取數(shù)據(jù),一定要注意將原來鋪平的數(shù)據(jù)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實現(xiàn)存浮點數(shù)數(shù)組就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python?Math數(shù)學(xué)函數(shù)常數(shù)冪和對數(shù)基礎(chǔ)應(yīng)用實例
Python中的math模塊是數(shù)學(xué)運算的重要工具,提供了豐富的數(shù)學(xué)函數(shù)和常數(shù),本文將深入探討math模塊的功能和用法,使您能夠更好地利用Python進行數(shù)學(xué)運算2023-12-12Python 使用SMTP發(fā)送郵件的代碼小結(jié)
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對smtp協(xié)議進行了簡單的封裝,需要的朋友可以參考下2016-09-09Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解
這篇文章主要介紹了Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07哪種Python框架適合你?簡單介紹幾種主流Python框架
這篇文章主要介紹了幾種主流的Python框架,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下2020-08-08Python定時任務(wù)隨機時間執(zhí)行的實現(xiàn)方法
這篇文章主要介紹了Python定時任務(wù)隨機時間執(zhí)行的實現(xiàn)方法,文中給大家提到了python定時執(zhí)行任務(wù)的三種方式 ,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08