AI基础之全连接

如上篇文章所讲,将我们需用的环境搭建完成以后,我们就可以开始AI之路了,下面就让我们来看看第一个网络框架结构——全连接吧。

import torch.nn as nn#导入所需库

class Net(nn.Module):    #初始化网络结构(设计神经网络)    def __init__(self):        super().__init__()        #设计一个多层结构的神经网络        self.layers = nn.Sequential(            nn.Linear(28*28,512),            #设计一层神经网络,有512个神经元,接受748个            nn.ReLU(),            nn.Linear(512,256),            nn.ReLU(),            nn.Linear(256,128),            nn.ReLU(),            nn.Linear(128,10),            nn.Softmax(dim=1)        )    # 前向计算(使用神经网络),将数据x输入到网络中,返回结果    def forward(self, x):        return  self.layers(x)

***************************************************************************************************************************************
import torchimport torchvisionimport torch.nn as nnfrom PIL import Imageimport torch.utils.data as datafrom my_net import Netimport  numpy as npimport  ossave_path = "module/net_ps.pth"

train_data = torchvision.datasets.MNIST(    root="MNIST_data",#单通道28*28黑白图片(0-9数字)    train=True,    transform=torchvision.transforms.ToTensor(),    download=True)test_data = torchvision.datasets.MNIST(    root="MNIST_data",    train=False,    transform=torchvision.transforms.ToTensor(),    download=False)

if __name__ == ‘__main__‘:    #创建数据加载器,每次从train_data里面取100张数据,打乱    train = data.DataLoader(dataset=train_data,batch_size=100,shuffle=True)#用数据加载器从train中每次加载100张图片并打乱    #实例化网络对象    net = Net()    #判断本地是否已经有网络的参数,如果有,那就加载之前的参数    if os.path.isfile(save_path):        net = torch.load(save_path)    #定义损失函数    loss_fun = nn.MSELoss()#对(h-y)^2求平均    #定义优化器,用这个优化器来优化网络内部的参数    optimizer = torch.optim.Adam(net.parameters())    #取数据,训练网络    for epoch in range(1000000):        for i,(x,y) in enumerate(train):#N C H W形状            #将图片变为100,784            x = x.reshape(-1,28*28)            #将图片输入到网络,得到结果            out = net(x)            #将标签y进行one-hot编码            target = torch.zeros(y.size()[0],10).scatter_(1,y.view(-1,1),1)            #将网络的结果和标签拿来做损失            loss = loss_fun(target,out)            #优化损失            optimizer.zero_grad()#清空梯度            loss.backward()#根据损失进行反向求导            optimizer.step()#更新梯度            #每训练10次,进行一次测试            if i%10 == 0:                out_put = torch.argmax(out,dim=1)                # print("target:",y)                # print("out:",out_put)                print("loss:",loss.item())

                #计算准确度                acc = np.mean(np.array(out_put==y,dtype=np.float32))                print("精度:",acc)                #保存网络参数                torch.save(net,save_path)

原文地址:https://www.cnblogs.com/wangyueyyy/p/11822340.html

时间: 2024-11-25 08:20:34

AI基础之全连接的相关文章

淘宝装修基础版全屏店招

1.淘宝基础版全屏海报旺铺基础版是左右两栏的布局,那我们就把左栏的模块全部删掉,在右栏建立自己的自定义模块,在自定义模块中加入以下代码,产生的效果就是通栏效果.在“加入自己的自定义内容”这句话这里插入自定义代码比如全屏不轮播代码等.<div class="J_TWidget" data-widget-config="{'effect': 'fade', 'circular': true ,'contentCls':'taobaoux'}" data-widge

贝叶斯公式由浅入深大讲解—AI基础算法入门

1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定的值.比如如果问那时的人们一个问题:"有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?"他们会想都不用想,会立马告诉你,取出白球的概率就是1/2,要么取到白球,要么取不到白球,即θ只能有一个值,而且不论你取了多少次,取得白球的概率θ始终都是1/2,即不随观察结果X

全连接神经网络 MLP

全连接神经网络 MLP 最近开始进行模型压缩相关课题,复习一下有关的基础知识. 1. MLP简介 上图是一个简单的MLP,这是典型的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层,Layer L3是隐含层. 为了方便下面的公式描述,引入一张带公式的图. i是input层,h是hide层,o是output层. 2. MLP 正向传播 正向传播其实就是预测过程,就是由输入到输出的过程. 为之前的图片赋上初值, 上述变量中,存在着如下过程:原始输入-> 带权计算-> ne

前馈全连接神经网络和函数逼近、时间序列预测、手写数字识别

https://www.cnblogs.com/conmajia/p/annt-feed-forward-fully-connected-neural-networks.html Andrew Kirillov 著Conmajia 译2019 年 1 月 12 日 原文发表于 CodeProject(2018 年 9 月 28 日). 中文版有小幅修改,已获作者本人授权. 本文介绍了如何使用 ANNT 神经网络库生成前馈全连接神经网络并应用到问题求解. 全文约 12,000 字,建议阅读时间 3

全连接层 和 卷积层

卷积不过是一个稀疏的全连接:全连接也不过是一个画面那么大的卷积.本质上都可以理解为矩阵乘法(卷积可以参考托普利兹矩阵和块循环矩阵),相比起来卷积这种形式可以很好捕捉图像这种有空间相关性输入的特征. 本身conv和fc两者在设计好conv大小的情况下就是等价的, 没有什么取代不取代的. 基本上可以理解全conv就是拿一个小点的fc不停的在图片不同位置上跑, 当然, 有层数的情况下不严格一样, 但是差不了多少. fc不愿意用是因为锁死分辨率, 而且容易造成模型参数太多, 性能上受限制. 但是fc可以

SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接

SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:             book表                                          stu表 1.内连接 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 1.2.不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值.这些运算符包括>.>=.<=.<.!>.!<和<&g

SQL Server 2008 R2——内连接 左连接 右连接 全连接 交叉连接

SELECT * FROM Table_A GO SELECT * FROM Table_B GO --内连接 SELECT a.*, b.* FROM Table_A a JOIN Table_B b ON a.ID = b.ID SELECT a.*, b.* FROM Table_A a INNER JOIN Table_B b ON a.ID = b.ID GO --内连接等价直接多表from的形式 SELECT a.*, b.* FROM Table_A a INNER JOIN Ta

SQL:内连接、左外连接、右外连接、全连接、交叉连接区别

有两个表A和表B.表A结构如下: Aid:int:标识种子,主键,自增ID Aname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据表B结构如下: Bid:int:标识种子,主键,自增ID Bnameid:int 数据情况,即用select * from B出来的记录情况如下图2所示: 图2:B表数据为 了把Bid和Aid加以区分,不让大家有误解,所以把Bid的起始种子设置为100.有SQL基本知识的人都知道,两个表要做连接,就必须有个

淘宝店铺基础版全屏装修步骤及代码,已经经过测试

1.淘宝基础版全屏海报旺铺基础版是左右两栏的布局,那我们就把左栏的模块全部删掉,在右栏建立自己的自定义模块,在自定义模块中加入以下代码,产生的效果就是通栏效果.在“加入自己的自定义内容”这句话这里插入自定义代码比如全屏不轮播代码等.<div class="J_TWidget" data-widget-config="{'effect': 'fade', 'circular': true ,'contentCls':'taobaoux'}" data-widge