全连接神经网络—数学公式原理图解加实现

图片是由一堆像素点构成的,现在我们假设一张图片(只含4个像素点):

5c224603e1c3404f8c5adafade45ef33.png

图片都有一个得分函数Y,得出的分数代表这张图片像狗的分数,这个得分越高,说明这张图片越像狗:

7b87f09dfbd44ddbaba0748076699aba.png

如果用python实现上述函数,最好使用2个矩阵进行相乘,转化为矩阵乘法

062e4c89fef94c4d8b64b0b9f7092577.png

目前为止,这个函数只能给狗这个类别打分,分数越高越像

 

假如我们现在还想再加入一个打分函数,给猫打分,那么就有2个函数了。

53818372a305410d85645955ffe16a53.png

转化为矩阵乘法:

500d1fef63544925b5649862460c5040.png

 

那么我们就可以根据这两个得分的高低判断是猫还是狗了。

如果还有其他的类别,可以继续加入。

如果将这些分数送入softmax函数,便能得出概率了。

 

续:

在tensorflow中实现上述问题:利用手写数字作为数据集,图像大小为28*28

28*28=784

给图像标号,图像大小为28*28=784,一共有784个像素点,

标记为x1,  x2, x3, x4............x783, x784

每个类别都有自己的参数:458e8f180028485d8e8e29e6ee66153b.png

每个像素点与对应位置参数相乘

d1bfa1e8077c4197ac547864dee055ae.png

这就得到了10个得分,那个得分高,图像的类别就是哪一类。

转换为矩阵乘法:

c821b2498f734228be8dd9bb44079c45.png

为了方便矩阵乘法,图像要展成一个向量。

7a4f4fbefde44b668582a7a1d05b3b9a.png

from tensorflow.keras.datasets import mnist
from tensorflow.keras import Model
from tensorflow.keras import layers
import tensorflow as tf

(x_train, y_train), (x_test, y_test) = mnist.load_data()


class MyDNN(Model):
    def __init__(self):
        super(MyDNN, self).__init__()
        self.Flatten = layers.Flatten(input_shape=(28, 28))
        self.Dense = layers.Dense(10, activation="softmax", use_bias=False)

    def call(self, inputs, training=None, mask=None):
        x = self.Flatten(inputs)
        x = self.Dense(x)
        return x


loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
net = MyDNN()
net.compile(optimizer="adam", loss=loss_fn, metrics=['accuracy'])
net.fit(x_train, y_train, epochs=5)

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
深度学习是一种机器学习的方法,通过多层神经网络来学习数据的特征表示。神经网络是由许多神经元(或节点)组成的网络,每个神经元可以通过权重和激活函数来对输入进行加权和非线性变换。 在深度学习中,数据通常表示为张量(tensor),它是一个多维数组。张量由一个或多个轴组成,每个轴表示数据的一个维度。常见的张量有标量(0维)、向量(1维)、矩阵(2维)等。 了解张量和神经网络后,我们可以开始实现深度学习模型。其中一个常用的深度学习框架是TensorFlow。TensorFlow是一个开源的Python库,可以用于构建和训练神经网络模型。 在TensorFlow中,我们可以通过定义网络的架构,包括层和节点的连接方式来构建神经网络模型。可以使用各种各样的层,如全连接层、卷积层和池化层等来构建模型。在每个层中,可以使用不同的激活函数来引入非线性。 一旦模型被构建,我们需要进行训练。在训练过程中,我们将数据输入模型中,并根据定义的损失函数来计算模型的预测误差。通过反向传播算法,我们可以根据这些误差来调整网络中的权重和偏差,以使模型的性能不断改进。 TensorFlow还提供了一些优化器,如随机梯度下降(SGD)等,用于自动计算和调整权重和偏差。此外,TensorFlow还支持分布式计算和GPU加速,可以加快计算速度。 通过图解深度学习与神经网络,我们可以更好地理解深度学习的原理和实现。通过学习如何使用TensorFlow构建和训练神经网络模型,我们可以更好地应用深度学习来解决各种各样的问题,如图像分类、语音识别和自然语言处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵药师

嘿嘿嘿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值