我需要训练一个模型,该模型可以识别手写数字的图像和语音数字的记录是指相同还是不同的数字。共有五个文件:
用于训练的图像文件; (45000行和784列-45,000个示例,代表28 * 28像素灰度图像的784维向量);
用于测试的图像文件;
用于培训的音频文件; (45000行和1列,共45,000个示例。由于数字语音名称的每个录音都是以MFCC数组的形式给出的,因此在每行中都有一个13列和N行数的嵌套对象。在这里,请假设我微调了数据,并且每一行都具有相同的嵌套对象形状,例如13列和2行,就像我想使用仅接受对称矩阵的SVM。)
音频文件进行测试;
匹配文件(布尔值为45000,为True和False)
我最初的想法是训练一个二进制分类器(如感知器),该分类器在给定的输入上返回true或false。输入是一对:图像和音频文件表示为矩阵中的单行。但是,我不知道如何将audio_train和image_train numpy文件组合到一个文件,因为图像文件的形状为2D数组(45K * 784),而音频文件的形状为1D数组并带有嵌套对象(45K *(2 * 13)* 1)。
这是一个示例数据集:
print(audio_train)
audio_train = [array([[ 1.3085e+00, -9.3684e-02, -1.1652e-01, -2.0097e-02, -1.4939e-01, -1.6002e+00, -5.9698e-01, -2.3489e-01, 9.7998e-01, 5.0539e-01,
2.7130e-01, -1.0654e-01, -6.9459e-01],
[ 1.5444e+00, 7.9972e-01, -2.3370e+00, -8.9078e-01, -9.1148e-01,-1.8320e+00, -1.5807e+00, -6.4720e-01, -6.2297e-01, -2.8574e-01, -4.3637e-01, -1.4341e+00, 1.8209e+00]])
array([[-0.5937 , -0.17398 , -0.82224 , 0.40214 , -0.64086 ,
-0.32342 , -0.016123 , 0.43442 , 0.75284 , -0.76024 ,
-2.4572 , -1.1883 , 2.6426 ],[ 0.21689 , -0.23259 , -0.30881 , 0.10589 , -1.1052,-1.4308, 0.059316 , 0.30892 , 0.035301 , -0.93058 ,
-2.2222 , 0.12733 , 0.65112 ]])
print(image_train)
image_train =
[[255 254 254 ... 255 255 255]
[255 255 254 ... 254 254 252]
[255 253 252 ... 255 255 255]
...
[254 255 252 ... 255 255 253]
[254 255 255 ... 251 252 255]
[255 252 254 ... 255 255 253]]
串联这两个文件的最佳方法是什么,以便我可以用它来训练SVM?