PyTorch安装使用
PyTorch1、Pytorch的安装以及环境管理12345# 安装环境conda create -n pytorch python=3.9# 激活环境,进入pytorch环境下conda activate pytorch
查看对应显卡类型,显卡算力以及需要下载的CUDA版本
显卡型号:GeForce RTX3060
显卡算力:8.6
CUDA SDK 11.1 – 11.4 support for compute capability 3.5 – 8.6 (Kepler (in part), Maxwell, Pascal, Volta, Turing, Ampere (in part)).
CUDA SDK 11.5 – 11.7.1 support for compute capability 3.5 – 8.7 (Kepler (in part), Maxwell, Pascal, Volta, Turing, Ampere)
CUDA版本:11.5-11.7
显卡驱动:11.6
进入pytorch官网,pytorch.org
选择对应型号
复制选中的内容, ...
深度学习实践实验-LSTM与迁移学习
实验5:LSTM与迁移学习1、序列预测已知一个整数序列的通项公式(自行选择),根据公式生成若干长度为5的序列做为训练集,训练一个LSTM网络,对给定的序列预测下一项的值。
完成程度:使用函数3*x+2生成100个长度为5的序列,选择前4列作为特征,第5列作为标签,按照9训练集:1测试集对生成的数据进行划分,定义LSTM网络,包含1个LSTM和一个全连接层。使用训练集对模型进行训练,在验证集上进行验证测试。
2、正弦函数预测通过已知的样本数据对正弦函数进行预测,并绘制成图形。要求分别设计LSTM,GRU和RNN网络进行预测,记录三者的预测准确率并绘制图形
完成程度:使用正弦函数生成200个长度为10的序列,选择前9列作为特征,第10列作为标签,按照3训练集:1测试集对生成的数据进行划分,分别定义RNN、LSTM、GRU网络,定义一个全连接层。分别使用三个模型在训练集上对模型进行训练,在测试集上进行验证测试。
3、猫狗大战通过来自kaggle上的猫狗数据集,训练一个识别猫狗图片的分类器。要求设计一个使用ResNet18作为主干的卷积神经网络,在迁移网络时采用固定值模式,要求模型的准确率不低 ...
深度学习实践实验-卷积神经网络
卷积神经网络1、手写数字识别 通过MNIST数据集训练得到一个手写数字分类器。要求设计一个至少包含2个卷积层和池化层的卷积神经网络。卷积核的尺寸不小于5*5,要求训后的得到的网络在测试集准确率不低于96%(要求在网络中使用dropout)
完成程度:获取MNIST数据集并保存,获取图片的训练集和测试集,构建卷积神经网络模型,包含2个卷积层,2个池化层,2个全连接层,在最后一个全连接前加入一个dropout层。定义模型和损失函数,并将模型和损失函数送入到GPU当中去,使用训练集训练模型,用测试集进行测试验证,最终准确率有99.35%。
2、CIFAR-10分类网络 通过CIFAR-10数据集训练得到一个手写数字分类器。要求设计一个至少包含2个卷积层和池化层的卷积神经网络。卷积核的尺寸统一采用3*3,要求训后的得到的网络在测试集上的准确率不低于70%(要求在网络中使用BatchNorm)
完成程度:下载CIFAR-10实验数据集,并将其划分成训练集和测试集,查看图片的尺寸,图片尺寸为32*32,一共有3个通道,定义卷积神经网络,一共包含5个卷积层,5个BN层,3个池化层,2个全连接层 ...
深度学习实践实验-SoftMax回归
SoftMax回归1、聚类和分类通过sklearn库提供的聚类算法生成K类数据,以这些数据做为数据集训练神经网络,利用softmax层和交叉熵损失函数对数据进行分类。聚类参数要求K>3,数据样本不少于1000,其他参数参考课件。对聚类后的数据按9:1的原则划分训练集和测试集,利用在训练集上训练得到的模型对测试集上的数据进行验证,要求模型的准确率不低于99%。
完成程度:使用sklearn.datasets中的make_blobs函数生成1200个样本数据,样本种类为4,样本中心分别为[-5, 5], [0, -2], [4, 8], [7, 3],方差分别为[1.5,1.5,1.2,1],每样样本数为300个,对样本数据进行划分,按照9训练集:1测试集的比例进行划分,构建网络,使用交叉熵损失函数,使用训练集对模型进行训练,在测试集上完成测试验证。
2、鸢尾花分类 Iris数据集包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,iris数据集是用来给鸢尾花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征,请用神经网 ...
深度学习实践实验-共享单车预测
实验二、共享单车预测内容1、通过历史数据预测某一地区接下来一段时间内的共享单车的数量。数据保存在文件bikes.csv中,请按11:1的比例划分训练集和测试集,首先对数据进行预处理,然后在训练集上训练,并在测试集上验证模型。
2、设计神经网络对数据进行拟合,利用训练后的模型对数据拟合并进行预测,记录误差,并绘制拟合效果。
完成情况1、数据预处理
完成程度:使用pandas读取原始数据bikes.csv,对离散数据使用one-hot编码处理,对连续数据进行标准化处理,将数据划分成11训练集:1测试集。删除某些处理过后的列,将标签列于数据分离。
2、设计神经网络拟合
完成程度:搭建神经网络,隐藏层包含10个Linear,通过Sigmoid函数进行非线性化处理,再通过输出层对数据进行输出。使用MSELoss损失误差,采用随机梯度下降的方法,设置学习率为0.01,batch_size=128。对训练集进行训练,用得到的模型对测试集进行测试,通过绘制图像进行对比分析。
读取原始数据,进行数据预处理123456# 导入相关包和函数import torchimport numpy as npimpo ...
深度学习实践实验-线性回归
实验一、线性回归
已知模型y = a*x + b
生成带噪声的数据拟合线性函数
绘制图像拟合效果
12345# 导入相关包import torchimport numpy as np%matplotlib inlinefrom matplotlib import pyplot as plt
1234567# 生成y = a*x + b的噪声数据200个# 定义a = 3, b = 2a, b = 3, 2x_datas = torch.linspace(1,20,200)rand_noise = torch.randn(200)*3y_lables = a*x_datas + b + rand_noise
1234# 绘制散点图plt.figure(figsize=(10, 8))plt.scatter(x_datas, y_lables)plt.show()
12345678# 将数据划分为训练集和测试集,按照180,20进行划分# 每十个数据中,分层抽取出一个数据作为测试集test_index = [10*i + np.random.randint(10) for ...
数字图像处理实验-图像去噪
1、均值滤波具体内容: 利用 OpenCV 对灰度图像像素进行操作,分别利用算术均值滤波器、几何均值滤波器、谐波和逆谐波均值滤波器进行图像去噪。模板大小为5*5。(注:请分别为图像添加高斯噪声、胡椒噪声、盐噪声和椒盐噪声,并观察滤波效果)
完成程度:读入灰度图像,分别为图像加入椒噪声、盐噪声、椒盐噪声以及高斯噪声,并使用5*5的模板分别对不同的噪声图像进行处理,处理的过程是用模板中的像素取平均值后赋值给中心像素,最终得到处理结果。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// 1、均值滤波Mat average_filter(Mat image1, string s) { // 构建均值滤波模板 Mat image = image1.clone(); int size = 5; image.convertTo(image, CV_8U); Mat meta = Mat::ones(size, size, CV_8U); int count_ ...
数字图像处理实验-空域滤波
1、利用均值模板平滑灰度图像具体内容: 利用 OpenCV 对图像像素进行操作,分别利用 33、55 和 9*9 尺寸的均值模板平滑灰度图像。
完成程度:对原图像进行边缘填充,用周围的像素点灰度值代替图像边缘的值,构造了33、55、7*7的均值模板,对灰度图像进行均值计算操作,将得到的均值赋值给对应的新矩阵。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263// 辅助函数1、对原始灰度图像进行边缘填充操作Mat fill_zero(Mat image, int size) { // 将边缘的填充为与它最近的像素灰度 int fill_size = int(size / 2); int row = image.rows; int col = image.cols; Mat first_row = image.rowRange(0, 1); Mat last_row = image.rowRang ...
数字图像处理实验-直方图均衡
1、计算灰度图像的归一化直方图具体内容:利用OpenCV对图像像素进行操作,计算归一化直方图,并在窗口中以图形的方式显示出来。
完成程度:读入图片,统计不同灰度级的像素个数,并存入大小为256的数组中。设置背景画布的大小,并根据数组中的最大值最小值,将不同灰度级像素点的个数映射到画布当中,通过使用柱线的方式,绘制直方图。
12345678910111213141516171819202122232425262728293031323334353637383940414243// 1、计算灰度图像的归一化直方图,并绘制图像void nomalization(Mat src_image, String name) { Mat image = src_image; double gray_scale[256] = { 0 }; int row = image.rows; int col = image.cols; // 统计不同灰度级的像素个数 for (int i = 0; i < row; i++) { for (int j = 0; j ...