2022秋中国海洋大学《软件工程》第14小组第二次作业

2022秋中国海洋大学《软件工程》第14小组第二次作业

本博客为OUC2022秋季软件工程第二次作业

文章目录

      • 2022秋中国海洋大学《软件工程》第14小组第二次作业
        • 一、学习心得
          • 兰宇瑞
          • 文顺
          • 李昊
          • 吴鑫磊
          • 陈子琪
          • 秦奥翔
        • 二、代码练习
          • 文顺
          • 李昊
          • 吴鑫磊
          • 兰宇瑞
          • 陈子琪
          • 秦奥翔

一、学习心得

兰宇瑞

通过学习网课内容,我明白了深度学习在我们生活中各个方面都有较为重要的运用,并且在现在以及将来的很长一段时间里,人工智能与深度学习都将成为计算机考研的主要方向,从网课里我还了解到深度学习在计算机视觉等方面展现出来的活力与潜力是以前机器学习算法所无法比拟的。为了让人工智能实现机器学习,我们可以用深度学习这个潜力极大的工具,但是深度学习算法输出不够稳定,模型复杂度较高,难以调试。而在本次视频学习中,我比较印象深刻的一点是:人工智能解决问题还是无法做到像人一样思考,它可以学习,但是并不能像人们一样学习,我们对它有更多了解的同时,也该明白它与人类相比的局限性。

文顺

主要讲了人工智能的发展史,现状,机器学习以及简单的深度学习介绍 。机器学习是人工智能的一方面,并且浅要了解了深度学习。同时了解了神经网络与深度学习的曲折发展史,在一次次的质疑和实践中不断优化算法,最终才慢慢走进人们的生活,发挥出生产价值。
介绍了深度学习,通过深度学习与神经元的类比来了解深度学习,了解了神经网络激活函数,增加深度可以使模型误差减小等等,粗略了解了梯度下降和误差反向传播问题等等。神经网络通过模拟人类神经元结构让我感觉很新奇,希望在接下来通过学习能够加深对深度学习的理解。

对于许多原理以及算法都只是有一个粗浅的了解,因此对于具体的神经网络和深度学习只停留在一个表层的浅显的认识。总的来说,对于深度学习深度学习仍是一知半解

李昊

通过此次网课学习,我初步了解了从专家系统到机器学习,从传统机器学习到深度学习的科技发展进程,同时对深度学习的能与不能有了初步的概念。同时我也初步掌握了一些深度学习的概念,如浅层神经网络:生物神经元到单层感知器,多层感知器,反向传播和梯度消失、神经网络到深度学习:逐层预训练、自编码器和受限玻尔兹曼机。同时我也体会到深度学习将会是未来一段时间内极为热门的技术,将为我们的生活带来很多便利。

吴鑫磊

此次的学习中首先是学习了pytorch的一些基础的内容,其具有强大的GPU加速的张量计算以及包含自动求导系统的深度神经网络。其中的tensor能够创造更高维度的矩阵、向量,用法很多。
其中用的线性模型,对于上面这种较复杂的模型来说,难以实现准确分类,准确率最高只能达到 50% 左右。
在使用两层神经网络中,在两层之间加入了一个 ReLU 激活函数,分类的准确率得到了显著提高,可以达到99%以上。

陈子琪

通过视频学习了解的人工智能的起源和应用,在未来人工智能具有非常好的前景以及非常广泛的应用,了解了机器学习和深度学习的相关概念,模型,策略和算法,了解了监督学习,强化学习和半监督学习,初步认识了深度神经网络及其与传统机器学习的区别,在传统的机器学习中,由人工设计特征,在深度学习中,神经网络可自动提取特征。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1LS52T7O-1664631448387)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]

单层神经网络的缺点:

1、我们的优化方法不一定能够找到我们所希望的优化参数,也就找不到我们需要的拟合函数,虽然这个拟合的函数是存在的;

2、训练结果好,但是泛化能力差,即很容易产生过拟合

深层神经网络(多层感知机):

使用更深层的神经网络,可以得到更好的表达效果,这可以直观地理解为:在每一个网络层中,函数特点被一步步的抽象出来;下一层网络直接使用上一层抽象的特征进行进一步的线性组合。但是深层神经网络的缺点在于:

1、在面对大数据时需要人为提取原始数据的特征作为输入,这个尺度很难掌握,多层神经网络会把蹲在屋顶的Kitty和骑在猫奴头上的Kitty识别为不同的猫咪,又会把二哈和狼归类为同一种动物。前者是对不相关变量过于敏感,后者则因无法提取有实际意义的特征。

2、想要更精确的近似复杂的函数,必须增加隐藏层的层数,这就产生了梯度扩散问题。

3、无法处理时间序列数据(比如音频),因为多层神经网络不含时间参数。

深度学习模型:

2006年,文章“Reducing the Dimensionality with Neural Networks”在Nature上发表,掀起了深度学习在学术界和工业界的研究热潮。作者阐述了两个重要观点:一、多隐层的神经网络可以学习到能刻画数据本质属性的特征,对数据可视化和分类等任务有很大帮助;二、可以借助于无监督的“逐层初始化”策略来有效克服深层神经网络在训练上存在的难度。不断发展。

对于更为复杂的问题,多层神经网络是解决不了这些问题的,而深度模型是如何解决以上的缺陷的呢?

1、深度学习自动选择原始数据的特征,如卷积神经网络模型等,能有效提取特征值。

2、深度网络的学习算法不同于深层神经网络:一是改变网络的组织结构,比如用卷积神经网络代替全连接(full connectivity)网络,训练算法仍依据Backpropagatinggradients的基本原理。另一种则是彻底改变训练算法,比如Hessian-freeoptimization,recursive least-squares(RLS)算法等。

3、使用带反馈和时间参数的RNN网络处理时间序列数据。

秦奥翔

通过学习两个视频的内容,我了解到了人工智能与深度学习目前的发展状况与前景。很显然,对于目前的世界来说,这方面的内容仍然是重点的发展方向。而且我了解到身边的很多同学都有以后从事相关方向的意向。但是,目前人工智能与深度学习仍然存在着许多方面的不足。在算法上,虽然已经相较之前的机器学习有了很好的改进,但是还有一些方面的不足。同时,我们也应该了解到神经网络作为深度学习的一个重要内容,主要效仿的是人工神经网络的研究。最让我感触的一点就是,计算机与科学是分不开的。如果说有一天人类生物已经能够研究人的精神网络的话,对于深度学习将会是一个大的进步!

二、代码练习

文顺

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u50Zwceq-1664631448389)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-02-50.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hbx9ZAdU-1664631448389)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-04-47.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOtDlThw-1664631448390)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-04-24.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M0Izf04P-1664631448391)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-04-00.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dikNX67v-1664631448392)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-03-49.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Flh9C0WW-1664631448392)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-04-56.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5okj7IZK-1664631448393)(C:\Users\86156\Desktop\文顺\Snipaste_2022-09-30_22-05-02.png)]

李昊

2.1

一、定义数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-heywYotN-1664631448394)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142038638.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhnobbxe-1664631448394)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142105322.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H6ddd8cs-1664631448395)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142111532.png)]

二、定义操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82VRbQBp-1664631448396)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142646675.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NmdCiahw-1664631448396)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142712040.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UtG6DUQV-1664631448397)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142721771.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qWvxnElp-1664631448398)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001142729432.png)]

2.2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-epZ9MtuU-1664631448398)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001143419047.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7acMxJ0-1664631448399)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001143513363.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yoZNJMms-1664631448399)(C:\Users\86156\AppData\Roaming\Typora\typora-user-images\image-20221001143549191.png)]

吴鑫磊

PyTorch是一个python库,它主要提供了两个高级功能:

  • GPU加速的张量计算
  • 构建在反向自动求导系统上的深度神经网络

一般定义数据使用torch.Tensor , tensor的意思是张量,是数字各种形式的总称

import torch

# 可以是一个数
x = torch.tensor(666)
print(x)

# 可以是一维数组(向量)
x = torch.tensor([1,2,3,4,5,6])
print(x)

等等
Tensor有着多种多样的方法,包括:ones, zeros, eye, arange, linspace, rand, randn, normal, uniform, randperm, 使用的时候可以在网上搜。

螺旋数据分类

import random
import torch
from torch import nn, optim
import math
from IPython import display
from plot_lib import plot_data, plot_model, set_default

# 因为colab是支持GPU的,torch 将在 GPU 上运行
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print('device: ', device)

# 初始化随机数种子。神经网络的参数都是随机初始化的,
# 不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,
# 因此,在pytorch中,通过设置随机数种子也可以达到这个目的
seed = 12345
random.seed(seed)
torch.manual_seed(seed)

N = 1000  # 每类样本的数量
D = 2  # 每个样本的特征维度
C = 3  # 样本的类别
H = 100  # 神经网络里隐层单元的数量

初始化 X 和 Y。 X 可以理解为特征矩阵,Y可以理解为样本标签。 结合代码可以看到,X的为一个 NxC 行, D 列的矩阵。C 类样本,每类样本是 N个,所以是 N*C 行。每个样本的特征维度是2,所以是 2列。

在 python 中,调用 zeros 类似的函数,第一个参数是 y方向的,即矩阵的行;第二个参数是 x方向的,即矩阵的列,大家得注意下,不要搞反了。下面结合代码看看 3000个样本的特征是如何初始化的。

X = torch.zeros(N * C, D).to(device)
Y = torch.zeros(N * C, dtype=torch.long).to(device)
for c in range(C):
    index = 0
    t = torch.linspace(0, 1, N) # 在[0,1]间均匀的取10000个数,赋给t
    inner_var = torch.linspace( (2*math.pi/C)*c, (2*math.pi/C)*(2+c), N) + torch.randn(N) * 0.2
    
    # 每个样本的(x,y)坐标都保存在 X 里
    # Y 里存储的是样本的类别,分别为 [0, 1, 2]
    for ix in range(N * c, N * (c + 1)):
        X[ix] = t[index] * torch.FloatTensor((math.sin(inner_var[index]), math.cos(inner_var[index])))
        Y[ix] = c
        index += 1

print("Shapes:")
print("X:", X.size())
print("Y:", Y.size())
  1. 构建线性模型分类
learning_rate = 1e-3
lambda_l2 = 1e-5

# nn 包用来创建线性模型
# 每一个线性模型都包含 weight 和 bias
model = nn.Sequential(
    nn.Linear(D, H),
    nn.Linear(H, C)
)
model.to(device) # 把模型放到GPU上

# nn 包含多种不同的损失函数,这里使用的是交叉熵(cross entropy loss)损失函数
criterion = torch.nn.CrossEntropyLoss()

# 这里使用 optim 包进行随机梯度下降(stochastic gradient descent)优化
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, weight_decay=lambda_l2)

# 开始训练
for t in range(1000):
    # 把数据输入模型,得到预测结果
    y_pred = model(X)
    # 计算损失和准确率
    loss = criterion(y_pred, Y)
    score, predicted = torch.max(y_pred, 1)
    acc = (Y == predicted).sum().float() / len(Y)
    print('[EPOCH]: %i, [LOSS]: %.6f, [ACCURACY]: %.3f' % (t, loss.item(), acc))
    display.clear_output(wait=True)

    # 反向传播前把梯度置 0 
    optimizer.zero_grad()
    # 反向传播优化 
    loss.backward()
    # 更新全部参数
    optimizer.step()
    
# Plot trained model
print(model)
plot_model(X, Y, model)

构建两层神经网络分类

learning_rate = 1e-3
lambda_l2 = 1e-5

# 这里可以看到,和上面模型不同的是,在两层之间加入了一个 ReLU 激活函数
model = nn.Sequential(
    nn.Linear(D, H),
    nn.ReLU(),
    nn.Linear(H, C)
)
model.to(device)

# 下面的代码和之前是完全一样的,这里不过多叙述
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate, weight_decay=lambda_l2) # built-in L2

# 训练模型,和之前的代码是完全一样的
for t in range(1000):
    y_pred = model(X)
    loss = criterion(y_pred, Y)
    score, predicted = torch.max(y_pred, 1)
    acc = ((Y == predicted).sum().float() / len(Y))
    print("[EPOCH]: %i, [LOSS]: %.6f, [ACCURACY]: %.3f" % (t, loss.item(), acc))
    display.clear_output(wait=True)
    
    # zero the gradients before running the backward pass.
    optimizer.zero_grad()
    # Backward pass to compute the gradient
    loss.backward()
    # Update params
    optimizer.step()
    # Plot trained model

print(model)
plot_model(X, Y, model)
兰宇瑞

2.1 pytorch基础练习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vPvHxtig-1664631448400)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rg9rycZN-1664631448400)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzJWWGda-1664631448400)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png)]

2.2 螺旋数据分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N6cTWOyh-1664631448401)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beBmZfre-1664631448401)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8Vn6Xsx-1664631448402)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DMzHCZMx-1664631448403)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mjPqVcoq-1664631448403)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg)]

陈子琪

2.1 pytorch

基础练习[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BnuAiKje-1664631448404)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZBySQQU-1664631448405)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PQ0pVNYE-1664631448405)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png)]

2.2 螺旋数据分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bSUAjgyo-1664631448406)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ov39V4KZ-1664631448406)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tz7hYfUx-1664631448407)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UAgfEAy3-1664631448407)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLZW5fXt-1664631448407)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg)]

秦奥翔

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WCX1Bml-1664631448408)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g19twdmF-1664631448409)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBoT87Kk-1664631448409)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-273Ix2Rw-1664631448410)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FSmbJEV-1664631448411)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rGvSDq1J-1664631448411)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EeLTqfso-1664631448412)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnWrcc5H-1664631448412)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N0isR0zx-1664631448413)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVvNAc4U-1664631448413)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3e4ZbxjG-1664631448414)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YfuUC97Y-1664631448414)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxMqBT8q-1664631448414)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LRiRvZTm-1664631448415)(file:///C:/Users/86156/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpg)]

GvSDq1J-1664631448411)][外链图片转存中…(img-EeLTqfso-1664631448412)][外链图片转存中…(img-XnWrcc5H-1664631448412)]

[外链图片转存中…(img-N0isR0zx-1664631448413)][外链图片转存中…(img-CVvNAc4U-1664631448413)][外链图片转存中…(img-3e4ZbxjG-1664631448414)][外链图片转存中…(img-YfuUC97Y-1664631448414)][外链图片转存中…(img-vxMqBT8q-1664631448414)][外链图片转存中…(img-LRiRvZTm-1664631448415)]

你可能感兴趣的:(软件工程)