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ù)以二進制存入會有精度丟失問題。
其實:當發(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)文章
tkinter如何獲取復(fù)選框(Checkbutton)的值
這篇文章主要介紹了tkinter如何獲取復(fù)選框(Checkbutton)的值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
快速了解Python開發(fā)環(huán)境Spyder
這篇文章主要介紹了Python開發(fā)環(huán)境Spyder的的相關(guān)資料,幫助大家更快的上手Spyder,感興趣的朋友可以了解下2020-06-06
pandas DataFrame行或列的刪除方法的實現(xiàn)示例
這篇文章主要介紹了pandas DataFrame行或列的刪除方法的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2019-08-08
如何利用Python快速統(tǒng)計文本的行數(shù)
這篇文章主要介紹了如何利用Python快速統(tǒng)計文本的行數(shù),要快速統(tǒng)計一個文本文件中的行數(shù),其實就是要統(tǒng)計這個文本文件中換行符的個數(shù),下面我們就一起進入文章看看具體的操作過程吧2021-12-12
Pythont特殊語法filter,map,reduce,apply使用方法
這篇文章主要介紹了Pythont特殊語法filter,map,reduce,apply使用方法,需要的朋友可以參考下2016-02-02

