CIFAR10 二進位制資料讀取

2021-08-26 02:21:31 字數 1564 閱讀 9125

class cifarread(object):

"""二進位制檔案的讀取,tfrecords儲存讀取

"""def __init__(self):

# 定義一些的屬性

self.height = 32

self.width = 32

self.channel = 3

self.label_bytes = 1

self.image_bytes = self.height * self.width * self.channel

self.bytes = self.label_bytes + self.image_bytes

# 1、構造檔案佇列

file_queue = tf.train.string_input_producer(file_list)

# 2、使用tf.fixedlengthrecordreader(bytes)讀取

# 預設必須指定讀取乙個樣本

reader = tf.fixedlengthrecordreader(self.all_bytes)

_, value = reader.read(file_queue)

# 3、解碼操作

# (?, ) (3073, ) = label(1, ) + feature(3072, )

label_image = tf.decode_raw(value, tf.uint8)

# 為了訓練方便,一般會把特徵值和目標值分開處理

print(label_image)

# 使用tf.slice進行切片

label = tf.cast(tf.slice(label_image, [0], [self.label_bytes]), tf.int32)

image = tf.slice(label_image, [self.label_bytes], [self.image_bytes])

print(label, image)

# 處理型別和資料的形狀

# 形狀

# reshape (3072, )----[channel, height, width]

# transpose [channel, height, width] --->[height, width, channel]

depth_major = tf.reshape(image, [self.channel, self.height, self.width])

print(depth_major)

image_reshape = tf.transpose(depth_major, [1, 2, 0])

print(image_reshape)

# 4、批處理

image_batch, label_batch = tf.train.batch([image_reshape, label], batch_size=10, num_threads=1, capacity=10)

cifar10資料的讀取

cifar10資料集檔案結構如圖所示,其中data batch 1 5.bin是訓練集,每個檔案包含10000個樣本,test batch.bin是測試集,包含10000個樣本。開啟任意乙個檔案,發現是一堆二進位制資料,其中乙個樣本由3037個位元組組成,其中第乙個位元組是label,剩餘3036 ...

CIFAR 10資料集讀取

參考 1 使用讀取方式pickle def unpickle file import pickle with open file,rb as fo dict pickle.load fo,encoding bytes return dict 返回的是乙個python字典 2 通過字典的內建函式,獲取...

php讀取二進位制 php讀取二進位製流

將php資料轉換為二進位制資料 string pack string format mixed args mixed 將二進位制資料轉換為php資料 array unpack string format,string data format a nul padded string a nul 字串填...