MNIST資料製作

2021-09-03 01:43:24 字數 2209 閱讀 3696

大端:較高的有效位元組存放在較低的儲存器位址,較低的有效位元組存放在較高的儲存器位址。

小端:較高的有效位元組存放在較高的的儲存器位址,較低的有效位元組存放在較低的儲存器位址。

如果將乙個32位的整數0x12345678存放到乙個整型變數(int)中,這個整型變數採用大端或者小端模式在記憶體中的儲存由下表所示。為簡單起見,本文使用op0表示乙個32位資料的最高位元組msb(most significant byte),使用op3表示乙個32位資料最低位元組lsb(least significant byte)。

位址偏移

大端模式

小端模式

0x00

12(op0)

78(op3)

0x01

34(op1)

56(op2)

0x02

56(op2)

34(op1)

0x03

78(op3)

12(op0)

如果將乙個16位的整數0x1234存放到乙個短整型變數(short)中。這個短整型變數在記憶體中的儲存在大小端模式由下表所示:

位址偏移

大端模式

小端模式

0x00

12(op0)

34(op1)

0x01

34(op1)

12(op0)

由上表所知,採用大小模式對資料進行存放的主要區別在於在存放的位元組順序,大端方式將高位存放在低位址,小端方式將高位存放在高位址。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其孰優孰劣也沒有定論。

struct語句

格式pack(fmt, v1, v2, …)

按照給定的格式(fmt),把資料封裝成字串(實際上是類似於c結構體的位元組流)

unpack(fmt, string)

按照給定的格式(fmt)解析位元組流string,返回解析出來的tuple

calcsize(fmt)

計算給定的格式(fmt)占用多少位元組的記憶體

struct中支援的格式如下表:

format

c type

python

位元組數x

pad byte

no value1c

char

string of length 11b

signed char

integer1b

unsigned char

integer1?

_bool

bool1h

short

integer2h

unsigned short

integer2i

intinteger4i

unsigned int

integer or long4l

long

integer4l

unsigned long

long4q

long long

long8q

unsigned long long

long8f

float

float4d

double

float8s

char

string1p

char

string1p

void *

long

為了同c中的結構體交換資料,還要考慮有的c或c++編譯器使用了位元組對齊,通常是以4個位元組為單位的32位系統,故而struct根據本地機器位元組順序轉換.可以用格式中的第乙個字元來改變對齊方式.定義如下:

character

byte order

size and alignment

@native

native

=native standard

按原位元組數

<

little-endian

standard 按原位元組數

>

big-endian

standard 按原位元組數

!network (= big-endian)

standard 按原位元組數

fmt:內容解析格式,其中b表示的是乙個位元組, > 表示的是大端法則,content_numb表示的是多少個位元組。

c 批量製作或者解壓MNIST資料集

在深度學習入門過程中,一般以mnist資料集入手,因此經常需要將自己的資料集壓縮成mnist格式形式帶入源 中進行訓練,同時mnist資料集為二值化影象,如果自己的資料集為rgb三通道影象,應該怎麼壓縮資料集影象成為mnist格式,c 指令碼 如下 1 標頭檔案 pragma once ifndef...

mnist手寫數字集製作tfrecords資料格式

tfrecords是一種二進位制檔案,可先將與標籤製作成該格式的檔案,使用tfrecords進行資料讀取,會提高記憶體利用率,將不同輸入檔案統一起來。檔案生成的過程 具體 如下 def generate tfrecord i ists os.path.exists data path 判斷儲存路徑是...

MNIST 資料 分類

分類和回歸的區別在於輸出變數的型別上。通俗理解定量輸出是回歸,或者說是連續變數 定性輸出是分類,或者說是離散變數 如 房價這是乙個回歸任務 把東西分成幾類,比如貓狗豬牛,就是乙個分類任務。1 import tensorflow as tf 2import numpy as np 3from tens...