专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

AI算法卷积神经网络CNN原理与实现

  1算法思想
  卷积神经网络通过所设计的卷积核与图像进行卷积操作,提取图像中的某些特征。通过卷积网络层数的加深,提取的特征从局部到整体,从而对物体进行识别。2算法推导2。1边缘特征检测示例
  图1。图像边缘检测
  假如有一张图像,想让计算机搞清楚图片上有什么物体,可以做的事情是检测图像的水平边缘与垂直边缘。
  (1)卷积操作
  如图1所示,是一个66的灰度图像,构造一个33的矩阵,在卷积神经网络中,通常称为filter(过滤器),对66的图像进行卷积操作得到44的矩阵。
  图2。卷积操作
  如图2所示,33的filter与66的灰度图像左上角33区域进行卷积31001(1)11508(1)21702(1)5,从而得到44左上角的5。
  (2)边缘提取
  图3。垂直边缘提取
  为什么这种卷积操作可以得到图像的边缘?
  如图3所示,原图是66的灰度图像,10的部分为亮区域,0的部分为暗区域。从100为垂直边缘。用一个33的过滤器,对图像进行卷积操作,得到图像中间亮,两边暗。亮暗交接处为边缘。
  (3)过滤器类型
  图4。垂直过滤器与水平过滤器
  通过图4的垂直过滤器与水平过滤器可实现垂直边缘与水平边缘检测。
  图5。过滤器类型
  图5列出了一些常用的过滤器,如sobel算子,scharr算子等。在卷积神经网络中,把这些过滤器当成我们要学习的参数,卷积网络训练的目标就是去理解过滤器的参数。2。2边缘填充padding
  图6。padding示意图
  (1)为什么进行padding?
  按照上述的描述,图片每经过一次卷积运算,会存在以下两个问题:图片会缩小导致无法进行深层卷积运算;原始图片边缘信息对输出贡献得少,输出图片丢失边缘信息。
  (2)怎样进行padding?假设输入的图片大小:
  过滤器的大小:
  两个水平与垂直边缘padding大小:
  则经过卷积操作的输出:
  2。3卷积步长stride
  图7。卷积步长为2对于input77,filter33,stride2,padding0;经卷积操作输出:;通用表示:,表示向下取整。2。4彩色图像的卷积
  以上讲述的卷积都是灰度图像的,如果想要在RGB图像上进行卷积,过滤器的大小不再是33,而是333,最后的3对应为通道数(channels)。卷积生成图像中,每个位置的像素值,为333的过滤器与图像相应位置相乘累加。如图8所示,过滤器依次在RGB图像上滑动,最终生成的图像大小为44。
  图8。单一filter彩色图像卷积
  另外一个问题是,如果我们在不仅仅在图像总检测一种类型的特征,而是要同时检测垂直边缘、水平边缘、45度边缘等,也就是多个过滤器的问题。如果有两个过滤器,最终生成图像为442的立方体,这里的2来源于我们采用了2个过滤器。
  图9。多个filter彩色图像卷积
  写成通用的形式:输入维度:
  每个滤波器的维度:
  权重维度:
  偏置维度:
  输出维度:
  其中:
  2。5池化层Pooling
  图10。Maxpooling示意图
  在卷积神经网络中,除了使用卷积层外,还使用池化层来缩减模型大小,提高计算速度。池化层分为最大池化层(maxpooling)与平均池化层(averagepooling)。池化层中的maxpooling是求每个过滤器滑动区域内的最大值;averagepooling是求每个过滤器滑动区域内的平均值。经过padding后的输出:
  一般情况下padding0,输出表示:
  2。6简单卷积神经网络示例LeNet5
  LeNet(LeNet5)由两个卷积层和三个全连接层构成。这两卷积层的卷积核均为55,第一个卷积层的输出通道为6,第二卷积层的输出通道为16。每个池化层窗口的大小为22,步长为2。三个全连接层分别有120、84和10个输出。3算法实现
  (1)下载数据集importtorchimporttorch。nnasnnimporttorch。nn。functionalasFimporttorch。optimasoptimfromtorchvisionimportdatasets,transformsimporttimefrommatplotlibimportpyplotaspltpiplinetraintransforms。Compose(〔随机旋转图片transforms。RandomHorizontalFlip(),將圖片尺寸resize到32x32transforms。Resize((32,32)),將圖片轉化為Tensor格式transforms。ToTensor(),正則化(當模型出現過擬合的情況時,用來降低模型的複雜度)transforms。Normalize((0。1307,),(0。3081,))〕)piplinetesttransforms。Compose(〔將圖片尺寸resize到32x32transforms。Resize((32,32)),transforms。ToTensor(),transforms。Normalize((0。1307,),(0。3081,))〕)下載数据集trainsetdatasets。MNIST(root。data,trainTrue,downloadTrue,transformpiplinetrain)testsetdatasets。MNIST(root。data,trainFalse,downloadTrue,transformpiplinetest)載入数据集trainloadertorch。utils。data。DataLoader(trainset,batchsize64,shuffleTrue)testloadertorch。utils。data。DataLoader(testset,batchsize32,shuffleFalse)
  (2)搭建LeNet5网络结构,并确定前向传递过程classLeNet(nn。Module):definit(self):super(LeNet,self)。init()self。conv1nn。Conv2d(1,6,5)self。relunn。ReLU()self。maxpool1nn。MaxPool2d(2,2)self。conv2nn。Conv2d(6,16,5)self。maxpool2nn。MaxPool2d(2,2)self。fc1nn。Linear(1655,120)self。fc2nn。Linear(120,84)self。fc3nn。Linear(84,10)defforward(self,x):xself。conv1(x)xself。relu(x)xself。maxpool1(x)xself。conv2(x)xself。maxpool2(x)xx。view(1,1655)xF。relu(self。fc1(x))xF。relu(self。fc2(x))xself。fc3(x)outputF。logsoftmax(x,dim1)returnoutput
  (3)将定义好的网络结构部署至CPUGPU上,并定义优化器建立模型,部署gpu或cpudevicetorch。device(cudaiftorch。cuda。isavailable()elsecpu)modelLeNet()。to(device)定义优化器optimizeroptim。Adam(model。parameters(),lr0。001)
  (4)定义训练过程deftrainrunner(model,device,trainloader,optimizer,epoch):訓練模型,啟用BatchNormalization和Dropout,將BatchNormalization和Dropout置為Truemodel。train()total0correct0。0enumerate迭代已載入的数据集fori,datainenumerate(trainloader,0):inputs,labelsdata把模型部署到device上inputs,labelsinputs。to(device),labels。to(device)初始化梯度optimizer。zerograd()儲存訓練結果outputsmodel(inputs)計算損失和多分類情況通常使用crossentropy(交叉熵損失函式),而對於二分類問題,通常使用sigmoidlossF。crossentropy(outputs,labels)获取最大概率的預測結果dim1表示返回每一行的最大值對應的列下標predictoutputs。argmax(dim1)totallabels。size(0)correct(predictlabels)。sum()。item()反向傳播loss。backward()更新参数optimizer。step()ifi10000:loss。item()表示當前loss的數值print(TrainEpoch{}Loss:{:。6f},accuracy:{:。6f}。format(epoch,loss。item(),100(correcttotal)))Loss。append(loss。item())Accuracy。append(correcttotal)returnloss。item(),correcttotal
  (5)定义测试过程deftestrunner(model,device,testloader):模型驗證,必須要寫,否則只要有輸入数据,即使不訓練,它也會改變權值model。eval()統計模型正確率,設定初始值correct0。0testloss0。0total0torch。nograd將不會計算梯度,也不會進行反向傳播withtorch。nograd():fordata,labelintestloader:data,labeldata。to(device),label。to(device)outputmodel(data)testlossF。crossentropy(output,label)。item()predictoutput。argmax(dim1)計算正確數量totallabel。size(0)correct(predictlabel)。sum()。item()計算損失值print(testavarageloss:{:。6f},accuracy:{:。6f}。format(testlosstotal,100(correcttotal)))
  (6)执行训练与测试ifnamemain:epoch5Loss〔〕Accuracy〔〕forepochinrange(1,epoch1):print(starttime,time。strftime(YmdH:M:S,time。localtime(time。time())))loss,acctrainrunner(model,device,trainloader,optimizer,epoch)Loss。append(loss)Accuracy。append(acc)testrunner(model,device,testloader)print(endtime:,time。strftime(YmdH:M:S,time。localtime(time。time())),)print(model)torch。save(model,。modelsmodelmnist。pth)儲存模型print(FinishedTraining)plt。subplot(2,1,1)plt。plot(Loss)plt。title(Loss)plt。show()plt。subplot(2,1,2)plt。plot(Accuracy)plt。title(Accuracy)plt。show()
  (7)保存网络模型print(model)torch。save(model,。modelsmodelmnist。pth)儲存模型

苹果本不叫苹果,古人取了个很唯美的名字,被日本人沿用至今在我国古代,常见的水果苹果,并不叫苹果,而是一个很有唯美感的名字。后来人们为了叫法更加简化好记,才改成苹果,但学习我们文化多年的日本,却将苹果的古名沿用至今。现代有些崇洋媚外的人喜1953年,解放军遭到精锐特种兵突袭,战斗结果如何?1953年7月13日,志愿军为了督促美国抓紧落实停战协议,在朝鲜38线附近发动了气贯长虹的金城战役。但美国人为了自己的面子,还想再垂死挣扎一下,遂使出一招围魏救赵,怂恿妄图反攻大陆西晋司马家的灭亡,尽归他一人之手在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持。自司马懿高平陵事变拿下曹魏兵权,其子司马昭灭蜀汉自封晋王,其孙司马炎逼曹奂禅位金巧根离奇失踪了?深入了解这位拄双拐残疾人,曾经金格贸易的CEO金巧根是一位脱离世俗的德行教育践行者,他是一位抛弃了一切效仿古人现代孟子,他曾是金格贸易的董事长,一位既能入世又能出世的奇人,他叫金巧根。金巧根是一位人间清醒,注定是孤行者,3月1李鸿章的大变局和大骗局大变局一说,源自李鸿章。1872年(同治十一年)五月,因支出巨大,清廷有停建轮船的议论,李鸿章遂呈递复议制造轮船未可裁撤折,认为惟养兵设防练习枪炮制造兵轮之费万不可省。奏折先是指出缅北真的都是中国人后代吗?为什么生活作息和语言都与中国相关?说到缅北就不得说一下缅甸,在古代缅甸一直都是中国的附属国,直到清朝,被英国侵占缅甸,至此缅甸被英国殖民。可在缅北的一些地区一直是属于中国领土的,但当时的清政府已经腐败无能为力,所以郭松龄叛乱造成的奉军损失有多大?到奉军战斗力最强,装备最先进,也是最为精锐的一支部队,几乎被打光。东北军从巡防营开始到30万的东北军,张作霖麾下的奉军,其实从始至终一直是一只封建习气极为浓重的私人武装力量,再加上诱惑,是检验定力的试金石古往今来,想成大事者必能抗拒诱惑。这个世界有着太多的诱惑,能够抗拒诱惑,才能走向光明之路。抗拒诱惑,是面对权威时的不卑不亢抗拒诱惑,是面对金钱时的不偏不倚抗拒诱惑,更是面对名利时的深得民心的元末乱世枭雄之一张士诚元至正十四年,公元1354年,元庭派遣丞相脱脱率百万大军进攻江浙一带的割据势力头目张士诚。元丞相脱脱下定决心要剿灭这个反叛势力,不允许投降,在攻下城池后还要屠杀城内百姓。张士诚此时文治王朝的先驱赵匡胤重文轻武的治国策略历史开讲赵匡胤是宋朝的开国皇帝,在他统治时期,他以文治为主要执政思想,而非常注重经济治理和文化建设,重文轻武成为了他统治理念的主旨之一,这种现象在当时是十分突出的。那么,为什么赵匡转型时代下爱德华三世有何政治实践?在黑死病弥漫中世纪的欧洲时,英格兰王国迎来了一位在历史上颇有争议的国王,他就是爱德华三世。早年依靠政变获得王位的爱德华三世,为了巩固统治,推行了不少改革,无论在政治上还是经济上都算
中小学教师晋升副高级职称,没有班主任经历可以吗?标准答案来了中小学教师晋升副高级职称,没有班主任工作经历,是完全可以的。但是,嗯,重点在这里,但是必须要有其它教学管理方面的工作经历。在学校里,哪些工作属于教学管理方面的呢?校长教被公司强迫离职怎么办?其实并不需要慌张!你只需要做到以下几点,就算公司刁难你,你也不需要害怕1联合所有被刁难的人,进行集合声讨权利,劳动仲裁局会站在你们这边的2按时上下班,做好记录,做好打卡,最好自己在月薪11k在上海处于什么水平?2016年,上海市平均工资6378元。具体分布如下从这个表看,月薪11k大约比75的人工资更高。不过,光看这个数是不靠谱的,因为每个人的学历工作年限所属行业都不尽相同,不同情形下的一个十五岁的初中毕业生,既没有考上高中又不愿去读技校,该怎么办?十五岁初中毕业,没有考上高中,说明学习不好,不是头脑不灵活,就是学习不努力又不愿意去读技校,说明不愁吃喝不懂生活,还是躲在父母身边的大宝,根本没想过自食其力。恕我直言,初中毕业赋闲为什么有的计算机专业的人想转金融行业,而金融专业的想转计算机行业?因为学计算机的看到了学金融的搞基金证券年薪近百万!而学金融的随着近两年数据分析等的应用,越来越需要计算机技术的支撑1,金融转计算机想法随着这两年金融业的发展,尤其是数字化转型搞得如offer比较,19校招,安永审计,建行总行人力资源相关岗位,选哪个?谢谢您的提问,小编专注于分享职场小技巧以及各种职场经验,每日更新,跪求大家关注。首先,小编在这里祝大家五一节快乐,身体健康万事如意。安永审计以及建行总行人力资源相关工作,这之间应该如何提高自己的职场竞争力?职场竞争力是一个笼统的概念,老实帮大家拆解为五力。只有进行逐层细化才能真正找到方向与着力点。在此基础上我们可以针对各个版块进行强化提升。一表现为现实的生产力职场竞争力的根本性基础性非常伤感的英语句子有哪些?1别伤我的心,里面住的是你。Dontbreakmyheart,itsyouinside。2今昔的别离,流放了我的相思。Theparting,myloveofexile。3不想哭,眼民办本科怎么样?分数够才能上还是钱够就可以上?民办本科怎么样?分数够才能上,还是钱够就可以?首先,谈谈民办本科怎么样?民办本科大学分为两种类型一是依托公立大学建立的独立学院,二是独立经营的民办大学。教育部对民办大学发展的政策是为什么现在越来越多的孩子都愿意考公务员?很多人愿意正面对人家刨根问底,那么可不可以让孩子们从反面问自己一下,现在社会上还有哪个职业比公务员的社会地位与经济收益好或稳定?在现有体制下,一经对比,很多孩子自然而然地就会选择去请问,兰州到张家界。坐火车怎么选择最短路径。谢谢?其实从兰州到张家界有一趟直达的旅客列车,那就是乌鲁木齐到南宁的T281234,这趟客车要停靠兰州和张家界,这趟客车运行路线是兰新陇海宁西焦柳湘桂,在兰州与张家界之间运行时间也要花2
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网