一 参数化学习的四个组成部分
1、参数化学习(Parameterized Learning)
Parameterized Learning:定义一个给定模型的必要参数的过程。
在机器学习的任务中,参数化包括用四个关键组件来定义一个问题:数据、评分函数、损失函数、权重和偏差。
- 数据(data)
数据包括两种数据(即,从图像中获得的原始像素强度、提取的特征等),以及它们相关的类标签。设计矩阵中的每一行都代表一个数据点,而矩阵中的每一列(它本身可以是一个多维数组)则对应着一个不同的特征。例如,考虑在RGB颜色空间中包含100张图像的数据集,每个图像的大小为32×32像素。这个数据集的设计矩阵将是X⊆R100×(32×32×3),其中Xi定义了R中的第i个图像。除了设计矩阵外,我们还定义了一个向量y,其中yi为数据集中的第i个示例提供了类标签。 - 评分函数(Scoring Function)
评分函数接受我们的数据作为输入,并将数据映射到类标签。例如,给定我们的输入图像集,评分函数获取这些数据点,应用一些函数f(我们的评分函数),然后返回预测的类标签,类似于下面的伪代码:
INPUT_IMAGES => F(INPUT_IMAGES) => OUTPUT_CLASS_LABELS
- 损失函数(loss function)
损失函数量化了我们预测的类标签与地面真实标签的一致性程度。这两组标签之间的一致性水平越高,我们的损失就越低(分类精度也越高,至少在训练集中是如此)。
我们在训练机器学习模型时的目标是最小化损失函数,从而提高我们的分类精度。 - 权重和偏差(weights and biases)
权重矩阵,通常表示为W,和偏差向量b被称为我们将要优化的分类器的权重或参数。基于我们的评分函数和损失函数的输出,我们将调整和调整权重和偏差的值,以提高分类精度。
二、使用步骤
代码如下(示例)
"""
参数化学习:定义一个给定模型的必要参数的过程
包含:1.数据
数据包含:特征(如图像强度等)和标签类别,
2.评价函数
3.损失函数
4.权重和偏差
"""
import random
import numpy as np
import cv2
#初始化类标签,并设置伪随机的种子,这样我们就可以重现我们的结果
labels = ['dog', 'cat', 'panda']
np.random.seed(1) #让随机数一样
#初始化我们的权重矩阵和偏差向量
W = np.random.randn(3, 3072)
b = np.random.randn(3)
# print(W)
# print("______"*20)
# print(b)
orig = cv2.imread("D:/DLCV/DLCV/my_study/datasets/images/dog.jpg")
image = cv2.resize(orig,(32,32)).flatten() #拉成一行 1*3027
scores = W.dot(image) + b
for (label, score) in zip(labels, scores):
print("[INFO] {}: {: .2f}".format(label,score))
cv2.putText(orig, "Label: {}".format(labels[np.argmax(scores)]),(10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.9,(0,255,0),2)
cv2.imshow("Image",orig)
cv2.waitKey(0)
输出:
[INFO] dog: 13322.29
[INFO] cat: -3184.82
[INFO] panda: 3775.88