我正在編寫一個Python程序來識別圖像上的字符。我已經選擇了一種識別方法,這不是我遇到的問題。這是困擾我的數據集訪問。我們得到一個訓練數據集(pickle文件),其中包含以單個矩陣形式存儲的圖像(NxD)
。每行是一個60x60的圖像。我們應該實現一個函數,對於矩陣X
將爲我們提供預測類標籤(標籤爲{0 ... 35} - 在圖像上識別的字符/數字)的矢量y
。Python圖像識別 - 訪問數據集
現在,我已閱讀了主題和所有內容,我正在使用HOG進行特徵提取,以及get_features
函數。我不明白,我應該如何分配x_train
和x_val
,以及y_train
和y_val
,只有我的.pkl文件中有。我決定嘗試將數據集隨機分爲x_train
和x_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
,我都需要這些變量來識別。任何提示都會很棒!
所以這將是第一個形象,對不對?如果我想爲所有這些做這個,我想id需要一個循環...但是它是必要的,是不是有另一種方法來做到這一點?我試過[:]但我想我應該提一下那個(?)專欄... – Swaglina