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