目录
一、实验介绍
- 使用Numpy实现
- 线性模型搭建
- 构造损失函数
- 进行模型前向传播并计算损失值
二、实验环境
conda create -n DL python=3.7
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib
三、实验内容
0. 导入库
首先,导入了numpy
库,用于进行数值计算。
import numpy as np
1. 定义线性模型linear_model
该函数接受输入数据x
,使用随机生成的权重w
和偏置b
,计算输出值output
。这里的线性模型的形式为 output = x * w + b
。
def linear_model(x):
w = np.random.randn(1)
b = np.random.randn(1)
output = np.dot(x, w) + b
return output
2. 定义损失函数loss_function
该函数接受目标值y
和模型预测值prediction
,计算均方误差损失。均方误差损失的计算公式为 (prediction - y) * (prediction - y)
。
def loss_function(y, prediction):
loss = (prediction - y) * (prediction - y)
return loss
3. 定义数据
- 生成了一个形状为
(5, 1)
的随机输入数据x
,每个元素都是在0到1之间的随机数。 - 生成了一个形状为
(5,)
的目标值y
,包含了5个标签(1或-1),用于模型训练和损失计算。 - 打印了数据的信息,包括每个样本的输入值
x
和目标值y
。
x = np.random.rand(5, 1)
y = np.array([1, -1, 1, -1, 1]).astype('float')
print("The data is as follows:")
for i in range(x.shape[0]):
print("Item " + str(i), "x:", x[i][0], "y:", y[i])
4. 调用函数
- 调用
linear_model
函数,传入输入数据x
,得到模型的预测值prediction
。 - 调用
loss_function
函数,传入目标值y
和预测值prediction
,得到损失值loss
。 - 打印了每个样本的损失值。
prediction = linear_model(x)
loss = loss_function(y, prediction)
print("The all loss value is:")
for i in range(len(loss)):
print("Item ", str(i), "Loss:", loss[i])
注意:
本实验的线性模型仅简单地使用随机权重和偏置,计算了模型在训练集上的均方误差损失,没有使用优化算法进行模型参数的更新。
通常情况下会使用梯度下降等优化算法来最小化损失函数,并根据训练数据不断更新模型的参数,具体内容请听下回分解。