tf.train.examle函數


在自定義數據集中:

example = tf.train.Example(features=tf.train.Features(feature={
                'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])),
                'label': tf.train.Feature(int64_list=tf.train.Int64List(value=labels))
                })) 
下面簡要談一談我對其的理解
創建 Example 對象,並且將 Feature(img_raw,label) 一一對應填充進去。並保存到writer中。
tf.train.Example的定義如下:
message Example {
 Features features = 1;
};
 
message Features{
 map<string,Feature> featrue = 1;
};
 
message Feature{
    oneof kind{
        BytesList bytes_list = 1;
        FloatList float_list = 2;
        Int64List int64_list = 3;
    }
};

從上述代碼可以看出,tf.train.Example中包含了屬性名稱到取值的字典,其中屬性名稱為字符串,屬性的取值可以為字符串(BytesList)、實數列表(FloatList)或者整數列表(Int64List)。

一般tf.train.Int64List tf.train.FloatList對應處理整數和浮點數,tf.train.BytesList用於處理字符串的數據。

從上面可以看出一個 Example 消息體包含了一系列的 feature 屬性。

每一個 feature 是一個 map,也就是 key-value 的鍵值對。

key 取值是 String 類型。

            而 value 是 Feature 類型的消息體,它的取值有 3 種:

                     BytesList
                     FloatList
                     Int64List
需要注意的是,他們都是列表的形式。

舉例說明:

1.構建writer,用於寫入數據

2.創建 Example 對象,並且將 Feature(a,b,c) 一一對應填充進去。a,b,c三個不同格式的列表並保存到writer中

3.# 將 example 序列化成 string 類型,然后寫入。即 writer.write(example.SerializeToString());

或者

serialized = example.SerializeToString() writer.write(serialized)
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy
writer = tf.python_io.TFRecordWriter('test1.tfrecord')
for i in range(0, 2):
    a = 0.520 + i
    b = [2019 + i, 2018+i]
    c = "測試"+str(i)
    c_raw = c
    print 'i:',i
    print '  a:',a
    print '  b:',b
    print '  c:',c
    example = tf.train.Example(
        features = tf.train.Features(
            feature = {'a':tf.train.Feature(float_list = tf.train.FloatList(value=[a])),
                       'b':tf.train.Feature(int64_list = tf.train.Int64List(value = b)),
                       'c':tf.train.Feature(bytes_list = tf.train.BytesList(value = [c_raw]))}))
    serialized = example.SerializeToString()
    writer.write(serialized)
    print '   writer',i,'DOWN!'
writer.close()

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM