自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (11)
  • 收藏
  • 关注

原创 002_wz_NLP_LSTM和LSTMCell

LSTM介绍先去看RNNLSTM使用“门”(sigmoid函数)解决了RNN不能记忆长距离信息的问题,使用累加方式的损失解决了RNN梯度爆炸/弥散的问题LSTM中有三个门,分别是:1.forget gate(遗忘门)遗忘门用来控制记住以前记忆(Ct−1C_{t-1}Ct−1​)的程度2.input gate(输入门)输入门用来控制记忆此时刻输入数据(XtX_tXt​)的程度此时在经过了遗忘门和输入门,我们可以拿到本次的记忆数据CtC_tCt​这里介绍一下,ftf_tft​是遗忘门,

2021-04-18 10:17:55 328

原创 001_wz_NLP_RNN和RNNCell

torch.nn.RNN输入参数:input_size:即对数据做embedding的数据维度feature_lenhidden_size:RNN的隐层维度num_layers:RNN网络的层数,默认为1层RNN的前向传播out, h_t = RNN(x, h_0)x:输入数据,维度为(seq_len, batch_size, feature_len)h_0/h_t:隐藏输出,维度为(num_layers, batch_size, hidden_size)out:为每一时刻隐层输出的列表

2021-04-17 15:51:16 300

原创 005_wz_科学是什么?前四节读书报告

科学是什么?前四节读书报告科学精神就是理性精神,就是自由的精神。文章围绕东西方科学的差异展开,Science——科学,现在让大家解释一下什么是科学,我们脑海中的第一出现的文字是什么?是不是浮现出那些高新技术和一些没办法表达的想法?中文“科学”一词是对Science的翻译,泛指自然科学。而德国的科学Wissenschaft一词包括的有自然、人为各种学问,如天算、物理、化学等在内,英文的Science更偏重自然科学,如政治学、哲学等是不包括在内的,中文科学也是如此。Science一词正是指“现代科学”,是指

2021-04-09 11:29:42 270 1

原创 004_wz_使用遗传算法解决0-1背包问题

一、目的使用传统遗传算法解决0-1经典背包问题。1.1 传统遗传算法001_wz_使用遗传算法计算函数的最大值1.2 0-1经典背包问题给定 n 件物品,物品的重量为w[i]w[i]w[i],物品的价值为c[i]c[i]c[i]。现挑选物品放入背包中,假定背包能承受的最大重量为VVV,问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大?测试数据:编号-重量-价值1: [95, 89],2: [75, 59],3: [23, 19],4: [73, 43],5: [50,

2021-04-06 19:30:32 478

原创 012_wz_ledr_pytorch深度学习实战_第十三讲——循环神经网络(RNN)高级篇

一、目的使用RNN(RNNCell使用GRU)搭建一个姓名分类器二、编程我们有数据集name-country:链接:https://pan.baidu.com/s/1vZ27gKp8Pl-qICn_p2PaSw提取码:cxe4我们将搭建下面这样一个网络用来对姓名进行分类在开始搭建网络之前我们要对数据集进行处理,将非结构化姓名转化为结构化的向量我们先将姓名表示为单个字符再用ASCII码处理因为不同的姓名长度不同,这样的数据无法输入到RNN,所以我们取最长的序列为基准,对其他的序列进行

2021-03-30 09:45:45 959

原创 011_wz_ledr_pytorch深度学习实战_第十二讲——循环神经网络(RNN)基础篇

一、目的搭建简单的RNN,实现seq2seq的转换二、编程先大概了解一下RNNRNN 其实也是一个普通的神经网络,只不过多了一个 hidden_state 来保存历史信息。跟一般网络不同的是,RNN 网络的输入数据的维度通常是[batch_size∗seqlen∗input_size][batch\_size*seqlen*input\_size][batch_size∗seqlen∗input_size],它多了一个序列长度seqlenseqlenseqlen。在前向过程中,我们会把样本ttt个

2021-03-27 21:30:16 433 3

原创 010_wz_ledr_pytorch深度学习实战_第十一讲——卷积神经网络(CNN)高级篇

一、目的本次目的是实现GoogNet的部分模块,以及如何去解决梯度消失问题(ResNet)二、编程GoogleNet中Inception模块其一:关于Inception模块的好处,看这篇文章:Inception 模块作用我们将搭建这样的网络输入层->卷积层->池化层->rule->inception->卷积层->池化层->relu->inception->全连接层数据集仍然使用Mnistimport torch.nn.fun

2021-03-25 20:57:29 259

原创 009_wz_ledr_pytorch深度学习实战_第十讲——卷积神经网络(CNN)基础篇

一、目的使用CNN网络对Mnist进行分类。二、编程我们使用pytorch框架。搭建两个卷积层、两个池化层、一个全连接层来实现。1、每一个卷积核它的通道数量要求和输入通道数量是一样的。这种卷积核的总数有多少个和你输出通道的数量是一样的。2、卷积(convolution)后,C(Channels)变,W(width)和H(Height)可变可不变,取决于是否padding。subsampling(或pooling)后,C不变,W和H变。3、卷积层:保留图像的空间信息。4、卷积层要求输入输出是

2021-03-24 16:41:26 305

原创 003_wz_kaggle之Otto Group Product Classification Challenge多分类问题

一、目的对kaggle上的Otto Group Product Classification Challenge项目进行多分类,数据集中每个个体提供93个特征,分9类。二、编程数据集官网下载即可,https://www.kaggle.com/c/otto-group-product-classification-challenge/data,还可以看到训练集与测试集的细节以及需要提交怎样的预测文件。使用pytorch框架,本次搭建4层神经网络,使用relu和softmax激活函数。下面是本次编程使

2021-03-23 21:07:30 860

原创 008_wz_ledr_pytorch深度学习实战_第九讲——多分类问题

一、目的使用softmax函数对Minist数据集进行分类二、编程2.1 softmax函数我们先来了解一下什么是softmax激活函数:softmax函数,又称归一化指数函数,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的计算方法:概率有两个性质:1)预测的概率为非负数;2)各种预测结果概率之和等于1。softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的。softmax如何将多分类输出转换为概率,可

2021-03-22 22:06:16 305

原创 002_wz_kaggle泰坦尼克号深度学习实现

一、目的使用深度学习对kaggle上的titanic项目,使用乘客数据(如姓名、年龄、性别、社会经济阶层等),建立一个模型预测泰坦尼克号沉船上哪些乘客能够幸存。二、编程该项目的训练集与测试集在官网下载即可:https://www.kaggle.com/c/titanic,在完成后还可以上传你的预测文件参与全世界排名。我们本次编程使用pytorch进行。本次将搭建一个三层神经网络,relu->relu->sigmoid,使用batch优化。下面是本次编程使用的模块:import num

2021-03-20 16:12:53 1249 3

原创 007_wz_ledr_pytorch深度学习实战_第八讲——加载数据集

一、目的加载数据集,使用mini-batch二、编程在之前的编程基础上我们增加了两个类来实现mni-batchDataSet 是抽象类,不能实例化对象,主要是用于构造我们的数据集DataLoader 需要获取DataSet提供的索引[i]和len;用来帮助我们加载数据,比如说做shuffle(提高数据集的随机性),batch_size,能拿出Mini-Batch进行训练。它帮我们自动完成这些工作。DataLoader可实例化对象。import torchimport numpy as np

2021-03-20 15:41:52 190

原创 006_wz_ledr_pytorch深度学习实战_第七讲——处理多维特征的输入

一、目的处理一个数据的多维特征输入二、编程当一个数据具有多维特征时,我们要将其向量化才得以一次处理多个特征1、乘的权重(w)都一样,加的偏置(b)也一样。b变成矩阵时使用广播机制。神经网络的参数w和b是网络需要学习的,其他是已知的。2、学习能力越强,有可能会把输入样本中噪声的规律也学到。我们要学习数据本身真实数据的规律,学习能力要有泛化能力。3、该神经网络共3层;第一层是8维到6维的非线性空间变换,第二层是6维到4维的非线性空间变换,第三层是4维到1维的非线性空间变换。我们在前两层使用relu

2021-03-17 15:36:29 269

转载 001_wz_使用遗传算法计算函数的最大值

一、目的求解函数f(x)=x+10sin(5x)+7cos(4x),x∈[0,9]f(x) = x + 10sin(5x) + 7cos(4x), x∈[0,9] f(x)=x+10sin(5x)+7cos(4x),x∈[0,9]的最大值这个函数大概是这个样子二、遗传算法介绍2.1 简述遗传算法(Genetic Algorithm)遵循『适者生存』、『优胜劣汰』的原则,是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。遗传算法模拟一个人工种群的进化过程,通过选择(Selection)、交叉

2021-03-15 22:07:08 3013

原创 005_wz_ledr_pytorch深度学习实战_第六讲——逻辑回归

一、目的用pytorch实现逻辑回归,并理解什么是逻辑回归二、编程相比于线性模型,逻辑回归在线性模型后面加入了非线性激活函数,使用了不同的损失函数(交叉熵);关于逻辑回归可以参考我的这篇文章——001_wz_sf_逻辑回归(Logistic Regression),我们主要看如何使用pytorch实现import numpy as npimport matplotlib.pyplot as pltimport torch# 数据集x_data = torch.Tensor([[1.0]

2021-03-06 16:37:14 175

原创 004_wz_ledr_pytorch深度学习实战_第五讲——用pytorch实现线性回归

一、目的使用pytorch实现线性回归二、编程2.1 实现流程2.2 编程实现import matplotlib.pyplot as pltimport torch# 数据集向量化# x,y是矩阵,3行1列 也就是说总共有3个数据,每个数据只有1个特征x_data = torch.tensor([[1.0], [2.0], [3.0]])y_data = torch.tensor([[2.0], [4.0], [6.0]])# 设计模型计算正向传播class LinearMod

2021-03-05 22:11:39 175

原创 003_wz_ledr_pytorch深度学习实战_第四讲——反向传播

一、目的线性模型y=ωxy={\omega}xy=ωx,使用pytorch实现反向传播二、编程w是tensor(张量类型),tensor中包含data和grad,data和grad也是Tensor。grad初始为None,调用l.backward()方法后w.grad为Tensor,故更新w.data时需使用w.grad.data。如果w需要计算梯度,那构建的计算图中,跟w相关的tensor都默认需要计算梯度。import torcha = torch.tensor([1.0])print(t

2021-03-04 18:23:21 253 2

原创 002_wz_ledr_pytorch深度学习实战_第三讲——梯度下降

一、目的模拟批量梯度下降算法,计算在x_data、y_data数据集下,y=ωxy={\omega}xy=ωx模型找到合适的ω\omegaω的值二、编程import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D# 数据集x_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]w = 1# 正向传播def forward(x)

2021-03-04 17:12:34 159 1

原创 001_wz_ledr_pytorch深度学习实战_第二讲——线性模型

一、目的对有y=ωx+by={\omega}x+by=ωx+b使用穷举法,找出最优参数二、编程import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D# 数据集x_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]# 正向传播def forward(x): return x * w + b# 计算损失def

2021-03-04 16:33:59 173 1

原创 012_wz_wed_DL_课程二第三周测试题

课程二 改善深层神经网络第三周 超参数调整,批量标准化,编程框架第 1 题如果在大量的超参数中搜索最佳的参数值,那么应该尝试在网格中搜索而不是使用随机值,以便更系统的搜索,而不是依靠运气,请问这句话是正确的吗?A.对B.不对第 2 题每个超参数如果设置得不好,都会对训练产生巨大的负面影响,因此所有的超参数都要调整好,请问这是正确的吗?A.对B.不对第 3 题在超参数搜索过程中,你尝试只照顾一个模型(使用熊猫策略)还是一起训练大量的模型(鱼子酱策略)在很大程度上取决于:A.是否使用批量

2021-02-24 20:29:06 473

原创 011_wz_wed_DL_课程二第二周编程题(mini_batch;Adam算法;动量梯度下降;经典梯度下降;对比;)

优化算法一、目的分割数据集测试优化梯度下降算法2.1 不使用任何优化算法2.2 mini-batch梯度下降法2.3 具有动量的梯度下降算法2.4 Adam算法二、训练集与测试集百度网盘,提取码:1234三、编程在开始之前,到目前为止,我们始终都是在使用梯度下降法学习,现在我们将使用一些更加高级的优化算法,利用这些优化算法,通常可以提高我们算法的收敛速度,并在最终得到更好的分离结果。这些方法可以加快学习速度,甚至可以为成本函数提供更好的最终值,在相同的结果下,有一个好的优化算法可以

2021-02-22 23:13:10 197

原创 010_wz_wed_DL_课程二第二周测试题

课程二 改善深层神经网络第二周 优化算法第 1 题当输入从第8个mini-batch的第7个的例子的时候,你会用哪种符号表示第3层的激活?A.a[3]{8}(7)a^{[3]\{8\}(7)}a[3]{8}(7)B.a[8]{7}(3)a^{[8]\{7\}(3)}a[8]{7}(3)C.a[8]{3}(7)a^{[8]\{3\}(7)}a[8]{3}(7)D.a[3]{7}(8)a^{[3]\{7\}(8)}a[3]{7}(8)第 2 题关于mini-batch的说法哪个是正确的?A.

2021-02-20 20:32:46 245

原创 009_wz_wed_DL_课程二第一周编程题(参数初始化;正则化;梯度校验;)

初始化、正则化、梯度校验一、目的初始化参数:1.1 使用0来初始化参数;1.2 使用随机数(高斯分布)来初始化参数;1.3 使用抑梯度异常初始化参数(参见视频中的梯度消失和梯度爆炸),即权重初始化;观察不同初始化的训练结果。正则化模型:2.1:使用二范数对二分类模型正则化,尝试避免过拟合;2.2:使用随机删除节点(dropout)的方法精简模型,同样是为了尝试避免过拟合;梯度校验 :对模型使用梯度校验,检测它是否在梯度下降的过程中出现误差过大的情况,确认反向传播的梯度计算正确;二

2021-02-18 00:19:21 430 3

原创 008_wz_wed_DL_课程二第一周测试题

课程二 改善深层神经网络第一周 深度学习的实践第 1 题如果你有10,000,000个例子,你会如何划分训练/开发/测试集?A.33%训练,33%开发,33%测试B.60%训练,20%开发,20%测试C.98%训练,1%开发,20%测试第 2 题开发和测试集应该:A.来自同一分布B.来自不同分布C.完全相同(一样的(x, y)对)D.数据数量应该相同第 3 题如果你的神经网络方差很高,下列哪个尝试是可能解决问题的?A.添加正则项B.获取更多测试数据C.增加每个隐藏层的神经元

2021-02-14 16:59:04 320

原创 007_wz_wed_DL_课程一第四周编程题(多层神经网络;不同层的对比;)

(n[L−1],n[L−2])(n^{[L-1]}, n^{[L-2]})(n[L−1],n[L−2]) (n[L−1],1)(n^{[L-1]}, 1)(n[L−1],1) Z[L−1]=W[L−1]A[L−2]+b[L−1]Z^{[L-1]} = W^{[L-1]} A^{[L-2]} + b^{[L-1]}Z[L−1]=W[L−1]A[L−2]+b[L−1] (n[L−1],209)(n^{[L-1]}, 209)(n[L−1],209) 第 L 层 (n[L],n[L−1])(n^{[L]}, n^

2021-02-08 22:43:45 499 4

原创 006_wz_wed_DL_课程一第四周测试题

课程一 神经网络和深度学习第四周 深度神经网络的核心概念第 1 题在我们的前向传播和后向传播实现中使用的“缓存”是什么?A.它用于在训练期间缓存成本函数的中间值。B.我们用它将在正向传播过程中计算的变量传递到相应的反向传播步骤。它包含了反向传播计算导数的有用值。C.它用于跟踪我们正在搜索的超参数,以加快计算速度。D.我们用它将反向传播过程中计算的变量传递到相应的正向传播步骤。它包含用于计算正向传播的激活的有用值。第 2 题以下哪些是“超参数”?(选出所有正确项)A.隐藏层规模n[l]n^

2021-02-01 21:48:02 311

原创 005_wz_wed_DL_课程一第三周编程题(隐藏层;二分类;)

具有单隐藏层的二类分类神经网络一、目的建立一个神经网络,它有一个隐藏层,用于对特定的数据进行二分类二、训练集与测试集百度网盘,提取码:1234三、编程本次编程所需的所有模块import numpy as npimport matplotlib.pyplot as pltimport sklearnimport sklearn.datasetsimport sklearn.linear_modelfrom testCases import *from planar_utils imp

2021-02-01 19:37:13 396

原创 004_wz_wed_DL_课程一第三周测试题

课程一 神经网络和深度学习第三周 浅层神经网络第 1 题以下哪项是正确的?(选出所有正确项)A.a[2](12)a^{[2](12)}a[2](12)是第12层,第2个训练数据的激活向量B.XXX是一个矩阵,其中每个列是一个训练数据C.a4[2]a^{[2]}_4a4[2]​是第2层,第4个训练数据的激活输出D.a4[2]a^{[2]}_4a4[2]​是第2层,第4个神经元的激活输出E.a[2]a^{[2]}a[2]表示第2层的激活向量F.a[2](12)a^{[2](12)}a[2](1

2021-01-31 19:45:39 410

原创 003_wz_wed_DL_课程一第二周编程题(Logistic回归;神经网络思维;)

具有神经网络思维的Logistic回归一、目的搭建一个能够识别猫的简单的神经网络二、训练集与测试集百度网盘,提取码:1234三、编程注:本编程未使用提供的py文件——lr_utils.py本次编程所需的所有模块import h5pyimport numpy as npimport matplotlib.pyplot as pltfrom skimage import transformnumpy :是用Python进行科学计算的基本软件包;h5py:是与H5文件中存储的数据集进行

2021-01-26 20:58:43 466 1

原创 002_wz_wed_DL_课程一第二周测试题

课程一 神经网络和深度学习第二周 神经网络基础第 1 题神经元计算什么?A.神经元计算激活函数后,再计算线性函数(z=Wx+b)B.神经元计算一个线性函数(z=Wx+b),然后接一个激活函数C.神经元计算一个函数g,它线性地缩放输入x(Wx+b)D.神经元先计算所有特征的平均值,然后将激活函数应用于输出第 2 题以下哪一个是逻辑回归的损失函数?A.L(i)(y^(i))=∣y(i)−y^(i)∣L^{(i)}(\hat{y}^{(i)})=|y^{(i)}-\hat{y}^{(i)}|L

2021-01-24 22:11:55 322

原创 001_wz_wed_DL_课程一第一周测试题

课程一 神经网络和深度学习第一周 深度学习简介第 1 题“人工智能是新电力”这个比喻指的是什么?A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力。B.通过“智能电网”,人工智能正在传递新一波的电力。C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情。D.与100年前开始的电力类似,人工智能正在改变多个行业。第 2 题以下哪些是最近深度学习开始崛起的原因?(选2个答案)A.我们拥有了更多的计算能力B.神经网络是一个崭新的领域。C.我们有了更多的数据。

2021-01-24 21:51:39 348

原创 001_wz_sf_逻辑回归(Logistic Regression)

1.什么是逻辑回归逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。注:代价函数是衡量我们训练的模型的好坏程度,为了训练逻辑回归模型的参数w和参数b,我们需要一个代价函数,通过训练代价函数来得到参数www和bbb;要注意区别代价函数和损失函数,代价函数J(w,b)J(w,b)J(w,b)是对于整个训练样本来说的,而损失函数L(y^,y)L(\hat{y},y)L(y^​,y)是对于单个的训练样本来说的。L

2021-01-24 21:35:09 281 1

原创 007_wz_bbk_ar cr t 链接外部静态库

Search OrderWhen environment variables and command-line options are used together the compiler searches the directories in the following order:Command-line options '-I' and '-L',from left to right....

2020-11-18 19:44:25 176

原创 006_wz_bbk_Make,外部库

Recompiling and RelinkingIn genaral,linking is a faster than compliation----in a large project with many source files,recompiling only those that have been modified can make a significant saving.T...

2020-11-05 17:03:38 131

原创 005_wz_bbk_-v详细信息,-c生成中间文件,链接次序

Verbose(冗长的) CompilationThe '-v' option can be used to display detailed information about the exact sequence of commands used to compile and link a program.-v显示详细信息The output produced by '-...

2020-11-05 17:03:33 151

原创 GCC编译过程和原理浅析

什么是GCCGCC(GNU C Compiler)编译器的作者是Richard Stallman,也是GNU项目的奠基者。GCC是GNU Compiler Collection的缩写。最初是作为C语言的编译器,现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL语言等。GCC支持多种硬件平台,甚至对Don Knuth设计的MMIX这类不常见的计算机都提供了完善的...

2020-10-22 12:20:58 639

原创 004_wz_bbk_用GCC编译第一个C程序及多文件编程

Compiling a Simple C ProgramThe classic example program for the C language is:#include <stdio.h>int main(void){printf("hello world!\n"); return 0;}To compile the file with gcc,use the f...

2020-10-08 16:57:34 107

原创 003_wz_bbk_Linux下GCC的安装

安装打开终端输入:yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automakeyum -y install wget httpd-tools vim测试查看gcc版本信息gcc --version查看gcc版本信息编写Helloworld创建名为ctest.c文件touch ctest.c...

2020-10-08 15:35:26 80

原创 002_wz_bbk_GCC的特点

Features of GCCGCC is a portable complier -- it runs on most platforms(平台) available today,and can produce output for many types of processors.In addition to the peocessors used in personal computer...

2020-09-30 19:06:43 92

原创 001_wz_bbk_GCC的介绍与发展历史

Reference BooksAn Introduction to GCCExpert C programmingreference booksA Brief(简短的) History of GCCThe original author of the GNU C Compiler(GCC) is Richard Stallman,the founder of the GN...

2020-09-30 18:01:35 217

010_wz_wed_DL_课程二第二周编程题

如题

2021-02-22

009_wz_wed_DL_课程二第一周编程题-梯度检验

如题

2021-02-18

009_wz_wed_DL_课程二第一周编程题-正则化

如题

2021-02-18

009_wz_wed_DL_课程二第一周编程题-参数初始化

如题

2021-02-18

009_wz_wed_DL_课程二第一周编程题-testCase

如题

2021-02-16

006_wz_wed_DL_课程一第四周编程题

如题

2021-02-08

005_wz_wed_DL_课程一第三周编程题

如题

2021-02-01

001_wz_ Identifying_cats.py

第二周编程作业源码

2021-01-26

003_wz_wed_DL_课程一第二周编程题反向传播与代价函数.pdf

003_wz_wed_DL_课程一第二周编程题反向传播与代价函数.pdf

2021-01-25

003_wz_wed_DL_课程一第二周编程题——反向传播与代价函数.pdf

003_wz_wed_DL_课程一第二周编程题——反向传播与代价函数.pdf

2021-01-25

003_wz_wed_DL_课程一第二周编程题——前向传播.pdf

003_wz_wed_DL_课程一第二周编程题——前向传播.pdf

2021-01-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除