美文网首页
最简单的神经网络

最简单的神经网络

作者: rivrui | 来源:发表于2021-02-04 21:04 被阅读0次

最简单的神经网络

准备训练数据

随机生成50个数据,用作训练数据

x = np.linspace(1, 100)

最简单的神经网络拟合,y=ax+b,所有设置y为

y = 2 * x + 3

不过,为了符合实际情况,可用适当增加一些噪声。

noise = torch.randn(50)
y = 2 * x + 3+noise.numpy()

绘制x,y的图象如下


构建神经网络

torch里面可以基于nn.Module类写自己的神经网络,这里使用最简单的线性层。

class nn(nn.Module):
    def __init__(self, in_features=1, mid_features=5, out_features=1):
        super(nn, self).__init__()
        self.layer1 = nn.Linear(in_features, mid_features)
        self.layer2 = nn.Linear(mid_features, out_features)
        self.layer = nn.Linear(mid_features, mid_features)

    def forward(self, x):
        x = self.layer2(x)
        for i in range(1):
            x = self.layer(x)
        x = self.layer2(x)
        return x

之后则是设置损失函数,优化器,依旧选择最简单的。

criterion = nn.L1Loss()
optimizer = optim.RMSprop(model.parameters())

其中L1形式的损失函数就在lasso loss,loss=(y-X\theta)+C|\theta|
RMSProp算法的全称叫 Root Mean Square Prop。
考虑到训练时1-100,那么预测则选取50-150。
迭代计算,结果如下:


全部代码
x = np.linspace(1, 100)
noise = torch.randn(50)
y = 2 * x + 3+noise.numpy()
plt.plot(x, y)
plt.show()
dataset = []
for i, j in zip(x, y):
    dataset.append([i, j])
epochs = 10
model = Nn(1, 1)
criterion = nn.L1Loss()
optimizer = optim.RMSprop(model.parameters())
dataset = torch.tensor(dataset, dtype=torch.float, requires_grad=True)
for times in range(epochs):
    for i, data in enumerate(dataset, 0):
        x, label = data
        optimizer.zero_grad()
        out = model(x.unsqueeze(dim=0))
        loss = criterion(out, label.unsqueeze(dim=0))
        print("loss:", loss.data.item())
        loss.backward()
        optimizer.step()
x = np.linspace(50, 150)
y = 2 * x + 3
dataset = []
for i, j in zip(x, y):
    dataset.append([i, j])
dataset = torch.tensor(dataset, dtype=torch.float, requires_grad=True)
pred_y = []
pred_x = x
for i, data in enumerate(dataset, 0):
    x, label = data
    optimizer.zero_grad()
    out = model(x.unsqueeze(dim=0))
    pred_y.append(out)
plt.plot(pred_x, pred_y)
print(pred_x, pred_y)
plt.show()

有时间给出最简单神经网络的解析

相关文章

  • 最简单的神经网络

    最简单的神经网络 准备训练数据 随机生成50个数据,用作训练数据 最简单的神经网络拟合,y=ax+b,所有设置y为...

  • 神经网络和深度学习(Neural Networks and De

    @[toc] 1.1欢迎 1.2 什么是神经网络 最简单的神经网络 1.3 用神经网络进行监督学习 CNN:适合于...

  • 前馈神经网络

    前馈神经网络 前馈神经网络,又称FNN(Feedforward Neural Network),是一种最简单的神经...

  • 深度学习基础知识学习笔记

    教材选用《动手学深度学习》,李沐等著; 单层神经网络 单层神经网络是最简单的神经网络,有线性回归(linear-r...

  • 使用PyTorch从零开始构建Elman循环神经网络

    本文以最简单的RNNs模型为例:Elman循环神经网络,讲述循环神经网络的工作原理,即便是你没有太多循环神经网络(...

  • 前馈神经网络

    前言 从这一节就开始接触最简单最朴素的神经网络了,叫做前馈神经网络。在这种神经网络中,各神经元从输入层开始,接收前...

  • 最简单的神经网络

    目前为止,我们接触的感知器的输出非 0 即 1,输出单元的输入经过了一个激活函数 f(h) 在此处就是指阶跃函数。...

  • 神经网络体系搭建(一)——神经网络

    本篇是神经网络体系搭建的第一篇,解决体系搭建的前四个问题,详见神经网络体系搭建(序) 神经网络 最简单的神经网络 ...

  • 自动编码器【转】

    查看原文 1 简介 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身...

  • 最简单的神经网络实现

    假设要解决这个问题: 写一个程序, 判断 0, 1, 2, 3 ... 9 这10个数的奇偶性 如果是传统算法, ...

网友评论

      本文标题:最简单的神经网络

      本文链接:https://www.haomeiwen.com/subject/snritltx.html