从零开始的神经网络框架搭建

发布时间:2024年01月05日

一、抽象化的神经网络

对于一个神经网络来的运算流程来说,基本可以分为两部分:训练与预测。而训练的基本流程又包括:输入数据、计算并激活、计算损失、优化等步骤。正对应神经网络架构的输入层、计算层、激活层、损失计算、优化器:

输入层数据:tensor,数据的流动有前向与反向两个方向。

计算层:负责接受上一层输入进行该层的运算,并将结果输入到下一层,由于tensor的流动有正向与反向两个方向,需要同时实现forward和backward两种运算。

激活层:为计算层数据提供非线性方向的运算分量。

损失计算层:计算损失和梯度

优化器:根据梯度更新模型参数。

?以下为伪代码表示:

# define 
net = Net(Activity([layer1, layer2,…]))  # 数据激活与计算
model = Model(net, loss_fn, optimizer)         # 模型
# training
pred = model.forward(train_x)                  # 前向计算
loss, grads = model.backward(train_y)          # 反向计算
model.apply_grad(grads)                        # 参数优化
# inference
test_pred = model.forward(test_x)              # 预测过程

net:计算层,也可以叫计算网络。

loss_fn:损失函数

optimizer:激活函数

model:模型构建

forward、backward:正反向计算,计算后将张量数据发送到下一层或者上一层。

test_pred:预测过程。从第一层开始,传到下一层。

注:张量tensor:Tensor(张量)是一个多维数组,它是标量、向量、矩阵的高维拓展。在数学和物理学中,张量用于表示一个具有多个维度的几何对象。在机器学习和深度学习领域,Tensor是数据的基本单位,用于存储和计算数据。

二、具体实现

1、tensor数据处理

文章来源:https://blog.csdn.net/qq_48843954/article/details/135416055
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。