深度学习 | Pytorch深度学习实践
一、overview
基于pytorch的深度学习的四个步骤基本如下:
二、线性模型 Linear Model
基本概念
- 数据集分为测试集和训练集(训练集、开发集)
- 训练集(x,y)测试集只给(x)
- 过拟合:模型学得太多导致性能不好
- 开发集:测验模型泛化能力
- zip:从数据集中,按数据对儿取出自变量
x_val
和真实值y_val
- 本例中进行人工training,穷举法
- 定义前向传播函数forward
- 定义损失函数loss
- MSE:平均平方误差
- zip:从数据集中,按数据对儿取出自变量
x_val
和真实值y_val
import numpy as np
import matplotlib.pyplot as pltx_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]def forward(x):#定义模型return x * wdef loss(x,y):#定义损失函数y_pred = forward(x)return (y_pred - y) * (y_pred - y)w_list=[]#权重
mse_list=[]
for w in np.arange(0.0,4.1,0.1):print('w=',w)l_sum = 0for x_val,y_val in zip(x_data,y_data):y_pred_val = forward(x_val)loss_val = loss(x_val,y_val)l_sum += loss_valprint('\t',x_val,y_val,y_pred_val,loss_val)print('MSE=',l_sum / 3)w_list.append(w)mse_list.append(l_sum / 3)plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()
注:模型训练可视化
wisdom:可视化工具包
三、Gradient Descent 梯度下降
3.1、梯度下降
(基于cost function 即所有样本):
如我们想要找到w的最优值
- 贪心思想:每一次迭代得到局部最优,往梯度的负方向走
- 梯度下降算法很难找到全局最优,但是在深度学习中损失函数中,全局最优最有很少出现,但会出现鞍点(梯度 = 0)
import numpy as np
import matplotlib.pyplot as pltw = 1.0
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]def forward(x):return x * wdef cost(xs,ys):cost = 0for x,y in zip(xs,ys):y_pred = forward(x)cost += (y_pred-y)**2return cost / len(xs)def gradient(xs,ys):grad = 0for x,y in zip(xs,ys):grad += 2 * x * ( x * w - y)return grad / len(xs)epoch_list=[]
cost_list=[]
print('Predict (before training)',4,forward(4))
for epoch in range(100):cost_val = cost(x_data,y_data)grad_val = gradient(x_data,y_data)w -= 0.01 * grad_valprint('Epoch',epoch,'w=',w,'loss=',cost_val)epoch_list.append(epoch)cost_list.append(cost_val)
print('Predict (after training)',4,forward(4))print('Predict (after training)',4,forward(4))
plt.plot(epoch_list,cost_list)
plt.ylabel('Loss')
plt.xlabel('epoch')
plt.show()
- 注:训练过程会趋近收敛
- 若生成图像局部震荡很大,可以进行指数平滑
- 若图像发散,则训练失败,通常原因是因为学习率过大
3.2、 随机梯度下降 Stochastic Gradient Descent
(基于单个样本的损失函数):
—— 因为函数可能存在鞍点,使用一个样本就引入了随机性
此时梯度更新公式为:
与之前的区别:
- cost改为loss
- 梯度求和变为单个样本
- 训练过程中要对每一个样本求梯度进行更新
- 由于两个样本的梯度下降不能并行化,时间复杂度太高
- 所以折中的方式:使用 Mini-Batch 批量随机梯度下降
- 若干个一组,后续将会涉及
import numpy as np
import matplotlib.pyplot as pltw = 1.0
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]def forward(x):return x * wdef loss(x,y):y_pred = forward(x)return (y_pred-y)**2def gradient(x,y):return 2 * x * (x * w - y)loss_list=[]
epoch_list=[]
print('Predict (before training)',4,forward(4))for epoch in range(100):for x,y in zip(x_data,y_data):grad = gradient(x,y)w = w - 0.01 * gradprint('\tgrad',x,y,grad)l = loss(x,y)loss_list.append(l)epoch_list.append(epoch)print("progress",epoch,'w=',w,'loss=',l)print('Predict (after training)',4,forward(4))
plt.plot(epoch_list,loss_list)
plt.ylabel('Loss')
plt.xlabel('epoch')
plt.show()
四 、反向传播 BackPropagation
对于复杂的网络:
举例来讲两层神经网络
若进行线性变换,不管多少层,最终都可以统一成一种形式,但为了让你不能在化简(即提高模型复杂程度),所以我们要对每一层最终的输出
加一个非线性的变化函数(比如sigmiod)
则层层叠加若需要求梯度的话就要用到 —— 链式求导:
- 1、构建计算图 —— 前馈计算(Forward)先计算最终的loss
- 2、反馈(Backward)
来看一下最简单的线性模型中的计算图的计算过程:
在pytorch中,使用tensor类型的数据
import torch
import matplotlib.pyplot as pltx_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]w = torch.Tensor([1.0]) #注意这里一定要加[] 权重初始值
w.requires_grad = Truedef forward(x):return x * w #因为w是Tensor,这里的运算符已经被重载了,x会进行自动转换,即构造了计算图def loss(x,y):y_pred = forward(x)return (y_pred - y) ** 2epoch_list = []
loss_list = []
print('Predict (before training)',4,forward(4))for epoch in range(100):#sum=0for x,y in zip(x_data,y_data):l = loss(x,y) #只要一做backward计算图会释放,会准备下一次的图l.backward()print('\tgrad:',x,y,w.grad.item()) #item将梯度数值直接拿出来为标量w.data = w.data - 0.01 * w.grad.data #grad必须要取到data#sum += l 但l为张量,计算图,进行加法计算会构造计算图,将会发生溢出w.grad.data.zero_() #!!!权重里面梯度的数据必须显式清零print("progress",epoch,l.item())epoch_list.append(epoch)loss_list.append(l.item())print('Predict (after training)',4,forward(4))
plt.plot(epoch_list,loss_list)
plt.ylabel('Loss')
plt.xlabel('epoch')
plt.show()
五、利用PyTorch实现线性回归模型 Linear Regression With PyTorch
pytorch神经网络四步走
- 1、构建数据集
- 2、设计模型(用来计算y_hat)
- 3、构建损失函数和优化器(我们使用pytorch封装的API)
- 4、训练周期(前馈 反馈 更新)
本例将使用 Mini-Batch,numpy有广播机制矩阵相加会自动扩充。
使用pytorch的关键就不在于求梯度了,而是构建计算图,这里使用仿射模型,也叫线性单元。
代码实现:
import torch
import matplotlib.pyplot as plt# 1、准备数据
x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[2.0],[4.0],[6.0]])# 2、构建模型
class LinearModel(torch.nn.Module):def __init__(self): #构造函数super(LinearModel,self).__init__()self.linear = torch.nn.Linear(1,1) #构造一个对象def forward(self,x):y_pred = self.linear(x) #实现可调用对象return y_predmodel = LinearModel()# 3、构造损失函数和优化器
criterion = torch.nn.MSELoss(size_average=False) #继承nn.Module,是否求平均
optimizer = torch.optim.SGD(model.parameters(),lr=0.01) #是一个类,不继承nn.Module,不会构建计算图,lr学习率epoch_list = []
loss_list = []for epoch in range(100):# 前馈 计算 y_haty_pred = model(x_data)# 前馈 计算损失loss = criterion(y_pred,y_data)print(epoch,loss) # loss是一个对象,打印将会自动调用__str__()optimizer.zero_grad() # 所有权重梯度归零# 反馈 反向传播loss.backward()# 自动更新,权重进行更新optimizer.step()epoch_list.append(epoch)loss_list.append(loss.item())# Output weight and bias
print('w = ',model.linear.weight.item())
print('b = ',model.linear.bias.item())# Test Model
x_test = torch.Tensor([4.0])
y_test = model(x_test)
print('y_pred = ',y_test.data)
plt.plot(epoch_list,loss_list)plt.ylabel('Loss')
plt.xlabel('epoch')
plt.show()
七、Multiple Dimension lnput
引例:糖尿病数据集分类任务
行称为:样本(Sample) 数据库中称为:记录(record)
列称为:特征 数据库中称为:字段
注:sklearn中提供一个关于糖尿病的数据集可作为回归任务的数据集
Mlultiple Dimension Loqistic Regression Model
再来看下Mini-Batch(N samples)的情况
为什么这里要将方程运算转换成矩阵运算 即 向量形式呢?
———— 我们可以利用并行运算的能力,提高运行速度。
Logistics回归只有一层神经网络,若我们构造一个多层神经网络:
将矩阵看成一种空间变换的函数,这里的(8,2)是指将一个人一八维空间的向量映射到一个二维空间上,注意是线性的,而我们所做的空间变换不一定是线性的,
所以我们想要多个线性变换层通过找到最优的权重,把他们组合起来,来模拟一个非线性变换
注意绿色框中我们引入的 即激活函数 ,在神经网络中我们通过引入激活函数给线性变换加入非线性操作,这样就使得我们可以去拟合相应的非线性变换。
对于本例 Example: Artificial Neural Network
1、建立数据集
import numpy as np
import torchxy = np.loadtxt('./dataset/diabetes.csv.gz', delimiter=',', dtype=np.float32)
x_data = torch.from_numpy(xy[:, :-1])
y_data = torch.from_numpy(xy[:, [-1]])
- 分隔符为,
- 为什么用float32,因为常用游戏显卡只支持32位浮点数,只有特别贵的显卡才支持64位
- 注意y,拿出来需要加中括号,拿出来矩阵
2、模型建立
class Model(torch.nn.Module):def __init__(self):super(Model, self).__init__()self.linear1 = torch.nn.Linear(8, 6)self.linear2 = torch.nn.Linear(6, 4)self.linear3 = torch.nn.Linear(4, 1)self.sigmoid = torch.nn.Sigmoid()def forward(self, x):x = self.sigmoid(self.linear1(x))x = self.sigmoid(self.linear2(x))x = self.sigmoid(self.linear3(x))return xmodel = Model()
- 注意上次调用的是nn.Function下的sigmoid,但是这里调用的是nn下的一个模块
3、构造损失函数和优化器
criterion = torch.nn.BCELoss(size_average=True)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
4、模型训练(这里还是全部数据)
for epoch in range(100):# forwardy_pred = model(x_data)loss = criterion(y_pred, y_data)print(epoch, loss.item())# backwordoptimizer.zero_grad()loss.backward()# updateoptimizer.step()
可以尝试不同的激活函数对结果的影响
torch.nn — PyTorch 2.1 documentation
Visualising Activation Functions in Neural Networks - dashee87.github.io
注意:Relu函数取值是0到1,如果最后的输入是小于0的,那么最后输出会是0,但我们可能会算In0,所以一般来说会将最后一层的激活函数改成sigmoid。
九、多分类问题
交叉熵损失和NLL损失到底有什么区别?
lmplementation of classifier to MNIST dataset
- ToTenser:神经网络想要的输入比较小,所以需要转变成一个图像张量
- 黑白图像:单通道
- 彩色图像:通道channel
- Normalize:标准化 切换到 0,1 分布 ,参数为 均值 标准差
- 四阶张量变成二阶张量
- 注意 最后一层不做激活
十、CNN 卷积神经网络 基础篇
首先引入 ——
- 二维卷积:卷积层保留原空间信息
- 关键:判断输入输出的维度大小
- 特征提取:卷积层、下采样
- 分类器:全连接
引例:RGB图像(栅格图像)
- 首先,老师介绍了CCD相机模型,这是一种通过光敏电阻,利用光强对电阻的阻值影响,对应地影响色彩亮度实现不同亮度等级像素采集的原件。三色图像是采用不同敏感度的光敏电阻实现的。
- 还介绍了矢量图像(也就是PPT里通过圆心、边、填充信息描述而来的图像,而非采集的图像)
- 红绿蓝 Channel
- 拿出一个图像块做卷积,通道高度宽度都可能会改变,将整个图像遍历,每个块分别做卷积
引例:
深度学习 | CNN卷积核与通道-CSDN博客
实现:A Simple Convolutional Neural Network
- 池化层一个就行,因为他没有权重,但是有权重的,必须每一层做一个实例
- 交叉熵损失 最后一层不做激活!
相关文章:
![](https://img-blog.csdnimg.cn/0059364b361442baa6e8713ef68f816d.png)
深度学习 | Pytorch深度学习实践
一、overview 基于pytorch的深度学习的四个步骤基本如下: 二、线性模型 Linear Model 基本概念 数据集分为测试集和训练集(训练集、开发集)训练集(x,y)测试集只给(x)过拟合…...
![](https://img-blog.csdnimg.cn/img_convert/662f75918c8f356f3332aa5c24511923.png)
Elasticsearch7.9.3保姆级安装教程
Linux版本Elasticsearch版本(待安装)Kibana版本(待安装)CentOS 77.9.37.9.3 一、下载地址 1、官网下载 打开地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch,按如图所示选择对应版本即可 2、采用wget下载 为了不必要的麻烦,建…...
![](https://img-blog.csdnimg.cn/img_convert/4c50904ff1a36991af3c339d3fc536e5.png)
深入使用探讨 PuppeteerSharp 抓取 LinkedIn 页面的步骤
LinkedIn是全球最大的职业社交平台之一,拥有大量的用户和企业信息。用户可以在上面建立个人职业资料、与其他用户建立联系、分享职业经验和获取行业动态。由于其庞大的用户群体和丰富的数据资源,开发者们对于获取LinkedIn数据的需求日益增长。 Puppeteer…...
![](https://img-blog.csdnimg.cn/2cce783aff5e445091975bfdcf9eb6de.png)
联合体(共用体)
1. 联合类型的定义 联合也是一种特殊的自定义类型。 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间。 2.联合大小的计算 联合的大小 至少是最大成员的大小 。 当最大成员大小不是最大对齐数的整数倍的时候,就要对 齐到最大对齐数…...
![](https://www.ngui.cc/images/no-images.jpg)
从零开始:GitFlow详细教程,轻松掌握分支策略
前序 GitFlow是一种用于管理Git仓库中软件开发工作流程的模型,它提供了一种结构化的方法来处理特性开发、版本发布和维护。下面是一个详细的GitFlow教程,帮助你了解GitFlow的基本概念和使用方法。 安装GitFlow 首先,确保你已经安装了Git。…...
![](https://img-blog.csdnimg.cn/07a27030fcf24dae93367a0f33ba9111.png#pic_center)
深度学习硬件介绍
目录 1. 深度学习电脑选型1.1 深度学习常用框架1.2 深度学习硬件选择1.3 GPU 厂商介绍科普 你真的需要这么一块阵列卡 1. 深度学习电脑选型 1.1 深度学习常用框架 常见的深度学习框架:百度的飞桨框架、Google 的TensorFlow,伯克利亚学院的Caffe&#x…...
![](https://img-blog.csdnimg.cn/953710f4420e40e8bf6c06f123f8d565.png)
利用向导创建MFC
目录 1、项目的创建: 2、项目的管理 : 3、分析以及生成的项目代码 : (1)、查看CFrame中的消息映射宏 (2)、自动生成事件 (3)、在CFrame中添加对应的鼠标处理函数 …...
![](https://img-blog.csdnimg.cn/891965f4bb0340d4892da3d8a374695a.png)
MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存
redo log buffer: 缓存与事务有关的redo log ,用来对mysql进行crash恢复,不可禁用; 日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。 默认大小为16MB。日志缓冲区的内容会定…...
![](https://img-blog.csdnimg.cn/ab93d6dcfaf14d1bb72091191129ec88.png)
ACL配置
目录 1.使用基本ACL配置交换telnet访问的权限 2.使用高级ACL配置流分类实现限制互访某一台服务器 3.使用二层ACL配置流分类拒绝指定报文通过 4.通过流策略实现策略路由(重定向到不同的下一跳) 5.通过流策略实现不同网段间限制互访 6.通过流策略实现限速功能 7.通过流策略…...
![](https://img-blog.csdnimg.cn/1440cb7bb0f24f36aa6c65436f5c9bf6.png)
微信小程序修改van-popup的背景颜色
效果图: van-popup背景颜色渐变 使用深度修改样式不生效,直接在 custom-style里面修改即可; <van-popup position"bottom"custom-style"height:25%;background:linear-gradient(95deg, #F8FCFF -0.03%, #EDF5FF 64.44…...
![](https://img-blog.csdnimg.cn/ed8d0f80e80a4ea5a54e83c3370a57de.png)
SpringCloud-Nacos
一、介绍 (1)作为服务注册中心和配置中心 (2)等价于:EurekaConfigBus (3)nacos集成了ribbon,支持负载均衡 二、安装 (1)官网 (2) …...
![](https://www.ngui.cc/images/no-images.jpg)
动态规划12(Leetcode221最大正方形)
代码: class Solution {public int maximalSquare(char[][] matrix) {int m matrix.length;int n matrix[0].length;int[][]area new int[m][n];area[0][0] matrix[0][0];int max 0;for(int i0;i<m;i){area[i][0] matrix[i][0]1? 1:0;max Math.max(area…...
![](https://img-blog.csdnimg.cn/b9c7ca570062479c9825668af36c026a.png)
【Git】bad signature 0x00000000 index file corrupt. fatal: index file corrupt
问题描述 电脑写代码时蓝屏。重启后 git commit 出错。 error: bad signature 0x00000000 fatal: index file corrupt原因分析 当电脑发生蓝屏或异常关机时,Git 的索引文件可能损坏。 解决方案 删除损坏的索引文件。 rm -Force .git/index回退到上一个可用的版…...
![](https://img-blog.csdnimg.cn/img_convert/bc1dad20217edd96a1aec08551f42642.webp?x-oss-process=image/format,png)
GO 语言的函数??
函数是什么? 学过编程的 xdm 对于函数自然不会陌生,那么函数是什么呢? 函数是一段可以重用的代码块,可以被多次调用,我们可以通过使用函数,提高咱们代码代码的模块化,提高程序的可读性和可维护…...
![](https://img-blog.csdnimg.cn/c9ee7a4bd4d940668071e371985a91f1.png)
机器学习基础之《回归与聚类算法(3)—线性回归优化:岭回归》
一、什么是岭回归 其实岭回归就是带L2正则化的线性回归 岭回归,其实也是一种线性回归。只不过在算法建立回归方程时候,加上L2正则化的限制,从而达到解决过拟合的效果 二、API 1、sklearn.linear_model.Ridge(alpha1.0, fit_interceptTrue…...
![](https://img-blog.csdnimg.cn/beac0c168fe54a72949a5338c894d6a0.png)
DirectX3D 正交投影学习记录
所谓正交投影变换,就是已知盒状可视空间内任意点坐标(x,y,z),求解垂直投影到xy平面的对应点坐标。 按照这个定义,xyz坐标系本身就是正交坐标系,盒状可视空间内任意点的坐标(x,y,z)投影到(x,y)平面,只要简单地丢弃z坐标…...
![](https://img-blog.csdnimg.cn/d9780b8600a24f7db6db197be13b0705.png)
数据挖掘十大算法--Apriori算法
一、Apriori 算法概述 Apriori 算法是一种用于关联规则挖掘的经典算法。它用于在大规模数据集中发现频繁项集,进而生成关联规则。关联规则揭示了数据集中项之间的关联关系,常被用于市场篮分析、推荐系统等应用。 以下是 Apriori 算法的基本概述&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
[蓝桥杯 2022 省 B] 统计子矩阵
题目描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵 (最小 11, 最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K。 输入格式 第一行包含三个整数 N, M和 K。 之后 N 行每行包含 M 个整数, 代表矩阵 A。 输出格式 一个整数代表答案。 输入输出样例 输入 #1 3…...
![](https://www.ngui.cc/images/no-images.jpg)
解决在部署springboot项目的docker中执行备份与之相连接的mysql容器命令
文章目录 问题描述解决思路问题解决容器构建mysql客户端安装容器与主机的交互docker中执行 mysqldump 命令解决mysql8密码验证问题解决密码插件警告 问题描述 由于,使用1panel可视化的面板来部署springboot项目,可以很方便地安装和使用mysql,…...
![](https://www.ngui.cc/images/no-images.jpg)
正文Delphi XE Android下让TMemo不自动弹出键盘
用TMemo来显示一段说明文字,可一点Memo,就弹出键盘,找了半天控制键盘的属性,没找到。最后将readOnly设置为True搞定。 如果需要一个form都不显示keyboard,那么可以利用全局变量 VKAutoShowMode来控制,这个全局变量可以有下面三个值…...
![](https://img-blog.csdnimg.cn/img_convert/3e13ac76cd454c675c973ff645802c0e.png)
[1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板
测评介绍 本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程&…...
![](https://img-blog.csdnimg.cn/7ac62f2040294c1ca64b4ecc85942ace.png)
PG集合查询
1.运算符 1.1 union并集 连接上下语句 union distinct连接并且去重 all不去重 1.2 intersect交集 上下交集 distinct连接并且去重 all不去重 1.3 except除外 上面除了下面 distinc去重 all不去重...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
目标检测应用场景和发展趋势
参考: 目标检测的未来是什么? - 知乎 (zhihu.com)https://www.zhihu.com/question/394900756/answer/32489649815大应用场景 1 行人检测: 遮挡问题:行人之间的互动和遮挡是非常常见的,这给行人检测带来了挑战。非刚性…...
![](https://img-blog.csdnimg.cn/10a732497f8c41c1b4f1c7a12e2c4928.png)
Confluence 自定义博文列表
1. 概述 Confluence 自有博文列表无法实现列表自定义功能,实现该需求可采用页面中引用博文宏标签控制的方式 2. 实现方式 功能入口: Confluence →指定空间→创建页面 功能说明: (1)页面引用博文宏 (…...
![](https://www.ngui.cc/images/no-images.jpg)
chrome历史版本下载
chrome历史版本下载 windows Google Chrome all versions on Windows linux版本 Google Chrome 64bit Linux版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒...
![](https://img-blog.csdnimg.cn/8b00e18ad5c843e29c28c24df7c95771.png)
Messari发布Moonbeam简报,每日交易量稳步增长,首次公布利润数据
区块链数据公司Messari首次发布Moonbeam项目分析简报,从项目市值、链上数据表现、质押以及Moonbeam的技术优势XCM使用量等角度全面分析。这个再熊市初期上线的项目一直在默默开发,并在跨链互操作领域拥有了相当的实操成绩。我们翻译了Messari简报中的部分…...
![](https://www.ngui.cc/images/no-images.jpg)
数据库 锁、索引、在实际开发中怎么设置和优化
数据库锁和索引是数据库管理的两个重要方面,它们对于确保数据的一致性和提高查询性能具有重要作用。在实际开发中,正确地设置和优化锁和索引对于构建高效、稳定的系统至关重要。下面是一些关于如何在实际开发中设置和优化锁和索引的建议: 锁…...
![](https://img-blog.csdnimg.cn/02edf8b4acd44cd9a587b5ee9b7cb815.png)
超详细彻底卸载Anaconda详细教程
一、在开始处打开Anaconda Prompt 二、打开后,输入conda install tqdm -f命令并按回车键 conda install tqdm -f三、之后页面会出现一个WANNING,这个我们不用在意,然后会出现一个y/n提示框,在这里我们输入y或者Y y四、输入cond…...
![](https://img-blog.csdnimg.cn/9f92f022b4cf477da1591fbe4bc1c16c.png)
Python--随机出拳(random)--if判断--综合案例练习:石头剪刀布
注:涉及相关链接: Python:if判断--综合案例练习:石头剪刀布-CSDN博客 Python语言非常的强大,强大之处就在于其拥有很多模块(module),这些模块中拥有很多别人已经开发好的代码&…...
![](https://img-blog.csdnimg.cn/4f6fa3baa31d4614a5f7c70a0d8a3e90.png#pic_center)
微信小程序里配置less
介绍 在微信小程序里,样式文件的后缀名都是wxss,这导致一个问题,就是页面样式过多的时候,要写很多的类名来包裹,加大了工作量,还很有可能会写错样式。这时可以配置一个less,会大大提高代码编辑…...
![](https://images2017.cnblogs.com/blog/1200609/201709/1200609-20170930101240153-1705337645.jpg)
中国建设银行网站/b站推广
1. plot()函数的使用 plot()函数的使用 plot(x,y,format_string,**kwargs) x:x轴数据,列表或数组,可选 y:y轴数据,列表或数组 format_string :控制曲线的格式字符串,可选由颜色字符,…...
![](/images/no-images.jpg)
莱州网站开发/app拉新推广
php中$_FIELS函数在php中上传一个文件建一个表单要比ASP中灵活的多。具体的看代码。然后upload.php中可以直接用$_FIELS,$_POST,$_GET等函数获取表单内容。当客户端提交后,我们获得了一个$_FILES数组$_FILES数组内容如下:$_FILES[‘myFile’][‘name’]:…...
![](/images/no-images.jpg)
政府网站建设经验交流材料/百度网址收录入口
3.set_difference 功能描述:求两个集合的差集 函数原型set_difference(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //求两个集合的差集 //注意:两个集合必须是有序序列 //beg1容器1开始迭代器 //end1容器1结束迭代器 /…...
![](/images/no-images.jpg)
王烨重生/百度seo优化服务项目
这个题就是让你求出S点到T点的第K短路, 使用A*搜索就可以, 搜索使用两个指标函数 h g, h表示从源点到当前点的最短路, g点表示从当前点到汇点的最短路, 搜索的时候v顶点第k次出队时的h就是第k短路的长度, 代码如下&…...
![](https://img-blog.csdnimg.cn/img_convert/e618082e54d588935d507b2879d72e91.png)
广州做网站好的公司/公司网站制作教程
作者:橙红年代 (https://juejin.cn/post/6923803717808422925)最近微博上曝出了很多瓜,"合成大西瓜"这个游戏也很火热,玩了一阵还挺有意思的。研究了一下原理,发现目前流传的版本都是魔改编译后的版本,代码经…...
![](/images/no-images.jpg)
顺德网站开发/西安百度seo推广电话
OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage。 一、Mat类型:矩阵类型,Matrix。 在openCV中,Mat是一个多维的密集数据数组。可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。 Mat有3个重要的方法&…...