日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据转换成tfrecord类型并完成读取

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据转换成tfrecord类型并完成读取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前提:

tensorflow --1.13.1 numpy --1.16.2 python --3.6.5

本例轉換 泰坦尼克號數據集
鏈接 密碼:n8wz
數據預覽:

字段說明:

PassengerId ,乘客的id號,這個我覺得對生存率沒影響。因為一個人的id號不會影響我是否生存下來吧。這列可以忽略

Survived ,生存的標號,上面圖的數值1表示這個人很幸運,生存了下來。數值0,則表示遺憾。

Pclass ,船艙等級,就是我們坐船有等級之分,像高鐵,飛機都有。這個屬性會對生產率有影響。因為一般有錢人,權貴才會住頭等艙的。保留。

Name ,名字,這個不影響生存率。我覺得可以不用這列數據。可以忽略

Sex , 性別,這個因為全球都說lady first,女士優先,所有這列保留。

Age , 年齡,因為優先保護老幼,這個保留。

SibSp ,兄弟姐妹,就是有些人和兄弟姐妹一起上船的。這個會有影響,因為有可能因為救他們而導致自己沒有上救生船船。保留這列

Parch , 父母和小孩。就是有些人會帶著父母小孩上船的。這個也可能因為要救父母小孩耽誤上救生船。保留

Ticket , 票的編號。這個沒有影響吧。

Fare , 費用。這個和Pclass有相同的道理,有錢人和權貴比較有勢力和影響力。這列保留

Cabin ,艙號。住的艙號沒有影響。忽略。

Embarked ,上船的地方。這列可能有影響。我認為登陸地點不同,可能顯示人的地位之類的不一樣。我們先保留這列。

字段類型:

1.csv數據轉換成tfrecord

這里取了7個進行后續分析,所以只保存其中7個參數

def transform_to_tfrecord():data=pd.read_csv('./data/Titanic-dataset/train.csv')tfrecord_file='train.tfrecords'def int_feature(value):return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))def float_feature(value):return tf.train.Feature(float_list=tf.train.FloatList(value=[value]))writer=tf.python_io.TFRecordWriter(tfrecord_file)for i in range(len(data)):features=tf.train.Features(feature={"Age":float_feature(data['Age'][i]),"Survived":int_feature(data['Survived'][i]),"Pclass":int_feature(data['Pclass'][i]),"Parch":int_feature(data['Parch'][i]),"SibSp":int_feature(data['SibSp'][i]),"Sex":int_feature(1 if data['Sex'][i]=='male' else 0),"Fare":float_feature(data['Fare'][i]),})example=tf.train.Example(features=features)writer.write(example.SerializeToString())writer.close()

2.tfrecord數據讀取

def read_and_decode(train_files,num_threads=2,num_epochs=100,batch_size=10,min_after_dequeue=10):reader=tf.TFRecordReader()filename_queue=tf.train.string_input_producer(train_files,num_epochs=num_epochs)_,serialized_example = reader.read(filename_queue)featuresdict=tf.parse_single_example(serialized_example,features={'Survived':tf.FixedLenFeature([],tf.int64),'Pclass':tf.FixedLenFeature([],tf.int64),'Parch':tf.FixedLenFeature([],tf.int64),'SibSp':tf.FixedLenFeature([],tf.int64),'Sex':tf.FixedLenFeature([],tf.int64),'Age':tf.FixedLenFeature([],tf.float32),'Fare':tf.FixedLenFeature([],tf.float32),})labels=featuresdict.pop('Survived')features=[tf.cast(value,tf.float32) for value in featuresdict.values()]features,labels=tf.train.shuffle_batch([features,labels],batch_size=batch_size,num_threads=num_threads,capacity=min_after_dequeue + 3 * batch_size,min_after_dequeue=min_after_dequeue)return features,labelsdef train_with_queuerunner():x,y=read_and_decode(['./data/Titanic-dataset/train.tfrecords'])with tf.Session() as sess:tf.group(tf.global_variables_initializer(),tf.local_variables_initializer()).run()coord=tf.train.Coordinator()threads=tf.train.start_queue_runners(sess=sess,coord=coord)try:step=0while not coord.should_stop():features,lables=sess.run([x,y])if step % 100==0:print('step %d:'%step,lables)step += 1except tf.errors.OutOfRangeError:print('Done training -- epoch limit reached')finally:coord.request_stop()coord.join(threads)

???????從TFRecord文件中讀出數據,使用TFRecordReader。TFRecordReader是一個算子,因此TensorFlow能夠記住tfrecords文件讀取的位置,并且始終能返回下一條記錄。

???????tf.train.string_input_producer方法用于定義TFRecord文件作為模型結構的輸入部分。該函數輸入文件名列表在Session運行時產生文件路徑字符串循環隊列。

???????根據產生的文件名,TFRecordReader.read方法打開文件,再由tf.parse_single_example方法解析成一條可用的數據。tf.train.shuffle_batch可以設置內存讀取樣本的上限與上限訓練batch批次的大小等參數,用于定義產生隨機生成的batch訓練數據包。

???????在Session的運行中,tf.train.shuffle_batch函數生成batch數據包的過程是作為線程獨立運行的。數據輸入線程的掛起和運行時機由batch數據的生成函數控制。本例中的tf.train.shuffle_batch函數指定內存保存樣本數量的上限capacity和下限min_after_dequeue。當內存的樣本數量大于上限capacity時,數據輸入線程掛起。反之,當樣本數量小于min_after_dequeue時,訓練程序掛起。函數start_queue_runners開啟對應運行回話Session的所有線程隊列并返回線程句柄。Coordinator類對象負責實現數據輸入線程的同步。當string_input_producer函數產生無限循環隊列時,應取消數據輸入與訓練程序的線程同步。

總結

以上是生活随笔為你收集整理的数据转换成tfrecord类型并完成读取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。