机器学习——葡萄酒分类问题(输入与输出维度相同)

本文探讨了一个输入和输出维度相同的葡萄酒分类问题,使用人工神经网络进行训练。尽管此类问题应用有限,但通过线性>>ReLU>>线性>>sigmoid模型进行建模,并采用交叉熵作为成本函数,实现了前向传播和反向传播。训练目标是找到最佳参数,以使预测结果接近期望输出。尽管输出维度高,难以直观验证效果,但该模型能揭示可测量与不可测量葡萄酒属性之间的关系。
摘要由CSDN通过智能技术生成

很多时候我们看到使用人工神经网络进行训练的问题都是一些分类问题,比如很有名的数字分类问题,其输入的是一个28*28像素的图片,但最终输出是一个数字。这类的问题对于我们来说是比较自然的,由多的原因得到一个结果。

但是最近我看到有一个葡萄酒的分类问题,讨论的问题的输入和输出的维度是相同的。这样的问题并不是没有,只是比较少,所以我认为值得讨论。不过在应用方面,存在一定的弊病:输入和输出的维度相同,使得它的应用范围存在一定的局限性,这是其一;其二,输入的内容信息量较大,输出的内容信息量也比较大,实质上我们并没有办法直观地了解输出的结果究竟怎么样,也无法直观地证明我们的训练结果是有效的,所以我们不得不再对输出的结果进行追加一步的处理。

数据集我会附在文章的后面,大家有兴趣可以自行下载。

接下来我们可以看看训练的过程。

一、随机指定种子

np.random.seed(1)

二、初始化参数

我们需要搭建一个人工神经网络,在此,我们使用的模型是:线性>>ReLU>>线性>>sigmod模型

def initialize_parameters_deep(layers_dims):
    """
    此函数是为了初始化多层网络参数而使用的函数。
    参数:
        layers_dims - 包含我们网络中每个图层的节点数量的列表
    
    返回:
        parameters - 包含参数“W1”,“b1”,...,“WL”,“bL”的字典:
                     W1 - 权重矩阵,维度为(layers_dims [1],layers_dims [1-1])
                     bl - 偏向量,维度为(layers_dims [1],1)
    """
    np.random.seed(3)
    parameters = {}
    L = len(layers_dims)
    
    for l in range(1,L):
	    parameters["W" + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) / np.sqrt(layers_dims[l - 1])
        parameters["b" + str(l)] = np.zeros((layers_dims[l], 1))
        
        #确保我要的数据的格式是正确的
        assert(parameters["W" + str(l)].shape == (layers_dims[l], layers_dims[l-1]))
        assert(parameters["b" + str(l)].shape == (layers_dims[l], 1))
        
    return parameters

三、向前传播的线性部分

def linear_forward(A,W,b):
    """
    实现前向传播的线性部分。

    参数:
        A - 来自上一层(或输入数据)的激活,维度为(上一层的节点数量,示例的数量)
        W - 权重矩阵,numpy数组,维度为(当前图层的节点数量,前一图层的节点数量)
        b - 偏向量,numpy向量,维度为(当前图层节点数量,1)

    返回:
         Z - 激活功能的输入,也称为预激活参数
         cache - 一个包含“A”,“W”和“b”的字典,存储这些变量以有效地计算后向传递
    """
    Z = np.dot(W,A) + b
    assert(Z.shape == (W.shape[0],A.shape[1]))
    cache = (A,W,b)
     
    return Z,cache

 

四、向前传播的线性激活函数

def linear_activation_forward(A_prev,W,b,activation):
    """
    实现LINEAR-> ACTIVATI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值