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 字串填...