我正在编写一个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