2017-06-05 87 views
2

我正在編寫一個Python程序來識別圖像上的字符。我已經選擇了一種識別方法,這不是我遇到的問題。這是困擾我的數據集訪問。我們得到一個訓練數據集(pickle文件),其中包含以單個矩陣形式存儲的圖像(NxD)。每行是一個60x60的圖像。我們應該實現一個函數,對於矩陣X將爲我們提供預測類標籤(標籤爲{0 ... 35} - 在圖像上識別的字符/數字)的矢量yPython圖像識別 - 訪問數據集

現在,我已閱讀了主題和所有內容,我正在使用HOG進行特徵提取,以及get_features函數。我不明白,我應該如何分配x_trainx_val,以及y_trainy_val,只有我的.pkl文件中有。我決定嘗試將數據集隨機分爲x_trainx_val,分別爲50-50。我得到的y向量填充,所以我應該分裂它以得到y_val以及?到目前爲止,我有我的最後一個函數代碼(+首先我加載數​​據):

def load_data(): 
    PICKLE_FILE_PATH = 'train.pkl' 
    with open(PICKLE_FILE_PATH, 'rb') as f: 
     return pkl.load(f) 

def final(): 
    """ 
    :param x: matrix NxD 
    :return: vector Nx1 
    """ 
    train = load_data() 
    x = get_features(train['x']) 
    N, D = x.shape 
    y = np.zeros((N, 1)) 
    np.random.shuffle(x) 
    x_train = x[:50] 
    x_val = x[50:] 
    # calling functions i'm using for recognition.... 
    return y 

現在,我得到一個錯誤,指出:

x = get_features(train['x']) 
TypeError: tuple indices must be integers or slices, not str 

分析它永遠之後,我假設在.pkl中,(NxD)矩陣每行有一個元素,因爲它應該每行包含一個圖像。也許我看到它錯了?也許在.pkl中沒有'x'呢,只是一個無名矩陣?我迷路了,我只想了解如何將.pkl文件中給出的那一點數據轉換爲我熟悉的變量x_train, x_val, y_train, y_val,我都需要這些變量來識別。任何提示都會很棒!

回答

0

如果你想有一個元組的第elemnt你必須做到:

x = get_features(train[0]) 
+0

所以這將是第一個形象,對不對?如果我想爲所有這些做這個,我想id需要一個循環...但是它是必要的,是不是有另一種方法來做到這一點?我試過[:]但我想我應該提一下那個(?)專欄... – Swaglina