我用的是pytorch架构,用简单的乘法数据集构建神经网络,并利用张量对象操作和梯度值计算更新网络权重。
输入层:
输入数据维度为2(简单乘法)。
隐藏层:
包含一个全连接层(nn.Linear(2, 8)),将输入层的2个特征映射到8个隐藏单元。
隐藏层使用ReLU(Rectified Linear Unit)激活函数,这是非线性变换,用于引入非线性到模型中,使网络能够学习更复杂的模式。
输出层:
包含另一个全连接层(nn.Linear(8, 1)),将隐藏层的8个单元映射到1个输出单元。
损失函数:
使用均方误差(Mean Squared Error,MSE)损失函数,适合回归任务,衡量预测值与真实值之间的差异。
优化器:
使用随机梯度下降(Stochastic Gradient Descent,SGD)优化器,学习率我设置为0.001,用于更新网络的权重以最小化损失函数。
通过生成器循环获取的网络参数
损失随 epoch 的变化情况可视化
数据集我选的是讯飞AI开发者大赛的‘车载相机图像的目标检测挑战赛’数据集
[车载相机图像的目标检测挑战赛](https://challenge.xfyun.cn/topic/info?type=vehicle-mounted-camera)
运行终端截图如下:
输出结果如下:
分数提交效果初步如下:
在小目标检测上,YOLOv10表现逊于YOLOv8,并且对于复杂场景,YOLOV10处理效果不是很好(唯一的优点恐怕就是速度快)(爆改后可能有不错反响)
对于推荐系统,经过初步学习,以电影数据为例的话可以使用两种方式来实现:
1.基于文本CNN的推荐。
2.基于矩阵分解的协同过滤的推荐。
我选的数据集是:(因为这个数据集比较小)
ez_douban数据集[ez_douban](https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/ez_douban/intro.ipynb)
而这个数据集的rating并没有具体的评论,所以用文本CNN可能不是很好,我选择的是矩阵分解的协同过滤算法来实现(同样采用pytorch框架)
从CSV文件中读取用户评分数据和电影信息。
将电影ID映射到连续的整数索引,便于后续处理。
合并数据框,只保留用户ID、电影索引和评分。
创建用户和电影数量的统计变量。
构建用户-电影评分矩阵,其中每一行代表一部电影,每一列代表一个用户,值为用户对电影的评分。
对评分矩阵进行归一化,去除用户评分偏好的平均影响,使得模型更关注于评分差异而非绝对值。
使用PyTorch定义两个参数矩阵:X_parameters 和 Theta_parameters 分别代表电影特征和用户偏好,初始化为随机值。
定义损失函数,包括预测误差的平方损失和正则化项,以防止过拟合。
使用Adam优化器更新参数矩阵,最小化损失函数。