猫史档案馆


python神经网络(要教程吗</?>)

用户:FexcodeFexcode查看:1 回复:2 评论:1 创建时间:2023-07-06T18:53:23


# -*- coding: utf-8 -*-

import numpy
import matplotlib.pyplot
import scipy.special


# 我的神经网络!!!
class 神经网络:
    def __init__(self, 输入层, 隐藏层, 输出层, 神经网络的学习率):
        """
        初始化我的神经网络
        这里可以调节参数
        """

        self.输入 = 输入层
        self.隐藏 = 隐藏层
        self.输出 = 输出层

        """
        随机权重
        -0.5~0.5
        """
        self.wih = (
            numpy.random.normal(
                0.0,
                pow(self.隐藏, -0.5),
                (self.隐藏, self.输入)
            )
        )

        self.who = (
            numpy.random.normal(
                0.0,
                pow(self.输出, -0.5),
                (self.输出, self.隐藏)
            )
        )
        self.学习率 = 神经网络的学习率

        self.激活函数 = lambda x: scipy.special.expit(x)
        pass

    def 运行(self, 输入列表, 目标列表):
        """
        神经网络的核心

        Parameters
        ----------
        输入列表 : TYPE
            DESCRIPTION.
        目标列表 : TYPE
            DESCRIPTION.

        Returns
        -------
        None.

        """
        # 注:T是
        输入 = numpy.array(输入列表, ndmin=2) .T
        目标 = numpy.array(目标列表, ndmin=2) .T

        隐藏输入 = numpy.dot(self.wih, 输入)
        隐藏输出 = self.激活函数(隐藏输入)

        最终输入 = numpy.dot(self.who, 隐藏输出)
        最终输出 = self.激活函数(最终输入)

        """
        误差计算
        """
        错误输出 = 目标-最终输出
        隐藏错误 = numpy.dot(self.who.T, 错误输出)
        self.who += self.学习率*numpy.dot(
            (
                错误输出*最终输出*(1.0-最终输出)
            ),
            numpy.transpose(隐藏输出)
        )

        self.wih += self.学习率*numpy.dot(
            (
                隐藏错误*隐藏输出*(1.0-隐藏输出)
            ),
            numpy.transpose(输入)
        )

        pass

    def 查询(self, 输入列表):
        """


        Parameters
        ----------
        输入列表 : TYPE
            DESCRIPTION.

        Returns
        -------
        None..


        激活函数公式:1/[1 + e^(-x)]
        我不知道为什么它要叫 expit(翻译:“把它exp了”)

        """
        输入 = numpy.array(输入列表, ndmin=2) .T
        隐藏层输入 = numpy.dot(self.wih, 输入)
        隐藏层输出 = self.激活函数(隐藏层输入)
        最后输入 = numpy.dot(self.who, 隐藏层输出)
        最后输出 = self.激活函数(最后输入)
        return 最后输出

        pass


# 文件 = open("mnist_train.csv", "r")
# 列表 = 文件.readlines()
# 文件.close()
# 所有值 = 列表[0].split(',')
# 图片数组 = numpy.asfarray(所有值[1:-2]).reshape((28, 28))
# matplotlib.pyplot.imshow(图片数组, cmap="Greys", interpolation='None')
# matplotlib.pyplot.show()


回复

上一页1 页 / 共 1下一页
jczzcjczzc

高级!(同志可曾听闻pytorch

点赞0


评论


一个STUB用户_6923702一个STUB用户_6923702

……

点赞0


评论