精华内容
下载资源
问答
  • 卷积神经网络代码
    千次阅读
    2020-09-21 14:11:23
    """---------------------cnn卷积神经网络---------------------"""
    import torch
    from torch import nn, optim
    import torch.nn.functional as F
    from torch.autograd import Variable
    from torch.utils.data import DataLoader
    from torchvision import transforms
    from torchvision import datasets
    from log1 import Logged
    
    # 定义超参数
    batch_size = 128
    learning_rate = 1e-2
    num_epoches = 20
    
    """04-Convolutional Neural Network"""
    def to_np(x):
        return x.cpu().data.numpy()
    
    
    # 下载训练集 MNIST 手写数字训练集
    train_dataset = datasets.MNIST(
        root='F:/PycharmProjects/pytorch-beginner-master/02-Logistic Regression/data', train=False, transform=transforms.ToTensor(), download=True)
    
    test_dataset = datasets.MNIST(
        root='F:/PycharmProjects/pytorch-beginner-master/02-Logistic Regression/data', train=False, transform=transforms.ToTensor())
    
    train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
    test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
    
    
    #定义 Convolution Network 模型
    #nn.Sequential:这个表示将一个有序的模块写在一起,也就相当于将神经网络的层按顺序放在一起,这样可以方便结构显示
    class Cnn(nn.Module):
        def __init__(self, in_dim, n_class):
            super(Cnn, self).__init__()
            self.conv = nn.Sequential(
                # 开始输入[batch_size=128, in_dim=1, 28,28]经过第一层Conv2d后,用公式W2 = ((input-kernel_size+2padding)/stride) + 1计算输出为:[128,6,28,28]
                nn.Conv2d(in_channels=in_dim, out_channels=6, kernel_size=3, stride=1, padding=1),
                # 修正线性单元,是神经元的激活函数 默认设置为False,表示新创建一个对象对其修改,也可以设置为True,表示直接对这个对象进行修改
                nn.ReLU(True),#输入[128,6,28,28],输出为:[128,6,28,28]
                # 池化层可以非常有效地缩小矩阵的尺寸。从而减少最后全连接层中的参数
                nn.MaxPool2d(2, 2),#输入:[128,6,28,28]输出:[128,6,14,14]
                nn.Conv2d(6, 16, kernel_size=5, stride=1, padding=0),#输入:[128,6,14,14]输出:[128,16,10,10]
                nn.ReLU(True), #
            nn.MaxPool2d(kernel_size=2, stride=2))#输入:[128,16,10,10]输出:[128,16,5,5]
    
        self.fc = nn.Sequential(
            nn.Linear(400, 120), #输入为:[128,400],输出为:[128,120]
            nn.Linear(120, 84), #输入为:[128,120],输出为:[128,84]
            nn.Linear(84, n_class))#输入为:[128,84],输出为:[128,10]
    
    def forward(self, x):
        out = self.conv(x)#输入x=[128,1,28,28],上面__init__一步步说明了out=[128,16,5,5]的由来
        #返回一个有相同数据但大小不同的tensor,-1就代表这个位置由其他位置的数字来推断
        out = out.view(out.size(0), -1)#out变为[128,x] x=128*16*5*5/128,所以x值为400,out为[128,400]
        out = self.fc(out)#进入这个函数看,输出为[128,10]
        return out
    
    
    model = Cnn(in_dim=1, n_class=10)  # 图片大小是28x28
    use_gpu = torch.cuda.is_available()  # 判断是否有GPU加速
    if use_gpu:
        model = model.cuda()
    # 定义loss和optimizer
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(model.parameters(), lr=learning_rate)
    #logger = Logged('F:/PycharmProjects/pytorch-beginner-master/04-Convolutional Neural Network/logs')
    #开始训练
    for epoch in range(num_epoches):
        print('epoch {}'.format(epoch + 1))
        print('*' * 10)
        for i, data in enumerate(train_loader, 1):
            img, label = data
            if use_gpu:
                img = img.cuda()
                label = label.cuda()
            img = Variable(img)
            label = Variable(label)
            # 向前传播
    
        # 开始输入为[batch_size=128, in_dim=1, 28,28] 其分别代表:batch_size组数据,通道数为1,
        # 高度为28,宽为28,输出为[batch_size=128,n_class=10],详情进model函数看
        out = model(img)
        loss = criterion(out, label)
    
        # 向后传播
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    
        if i % 20 == 0:
            print("loss: ", loss.data.item())
    
    
    model.eval()
    for data in test_loader:
        img, label = data
        if use_gpu:
            with torch.no_grad():
                img = Variable(img).cuda()
                label = Variable(label).cuda()
        else:
            with torch.no_grad():
                img = Variable(img)
                label = Variable(label)
        out = model(img)
        loss = criterion(out, label)
    print("test loss: ", loss.data.item())
    
    # 保存模型
    torch.save(model.state_dict(), 'F:/PycharmProjects/pytorch-beginner-master/04-Convolutional Neural Network/cnn.pth')
    
    更多相关内容
  • 卷积神经网络matlab代码.rar
  • 卷积神经网络代码.zip

    2021-06-03 16:27:07
    卷积神经网络
  • CNN卷积神经网络Matlab实现例程,使用了matlabR2019a自带的深度学习工具箱
  • 卷积神经网络代码 Matlab deep-learning-test 深度学习导论课上的matlab实现卷积神经网络的代码,最后会有一个手写数字识别作业!
  • 详细的代码,下载就可直接用,方便快捷,希望可以采纳。
  • C#卷积神经网络代码

    2018-11-04 00:28:19
    用c#实现卷积神经网络,可以训练识别图片,代码按照卷积神经网络算法思路撰写,准确率
  • 卷积神经网络代码,用MATLAB语言编写,可在maltab平台中运行。
  • 关于一些初步卷积神经网络的HLS代码及约束。通过这部分可以了解卷积神经网络在HLS上面的实现。具有一些借鉴意义,想要真正的了解还请参加Xilinx每年的暑期计划。
  • 深度学习-卷积神经网络代码详解

    千次阅读 2021-09-07 18:48:31
    构造卷积神经网络 CNN将形状为(高度,宽度,色彩通道数)的张量作为输入,忽略批次的大小。 在本实例中,我们将配置CNN处理(32,32,3)的输入,通过参数input_shape传递给第一层来实现这个目的。 model = models....

    构造卷积神经网络

    CNN将形状为(高度,宽度,色彩通道数)的张量作为输入,忽略批次的大小。
    在本实例中,我们将配置CNN处理(32,32,3)的输入,通过参数input_shape传递给第一层来实现这个目的。

    model = models.Sequential()
    

    Sequential()方法是一个容器,描述了神经网络的网络结构,在Sequential()的输入参数中描述从输入层到输出层的网络结构。

    第一层卷积层:32个3*3的卷积核,使用Relu作为激活函数

    model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
    

    第2层是2*2的最大池化层

     model.add(layers.MaxPooling2D((2, 2)))
    

    第3层为卷积层 64个3*3的卷积核 RELU作为激活函数

    model.add(layers.Conv2D(64, (3, 3), activation='relu'))
    

    第4层为2*2的最大池化层

    model.add(layers.MaxPooling2D(2, 2))
    

    增加Dense层,Dense是全连接层, Flatten()层作为将2高维展平为1维,常用在卷积层到全连接层的过渡。所以在加全连接层之前要加Flatten层,将输入的图像展平到1维。

    model.add(layers.Flatten())
    

    再加入两个全连接层,因为本例是一个10分类的问题,所以最后一层的全连接层输出为10。

    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(10))
    

    编译并训练模型

    model.compile()方法用于配置训练方法时,告知训练时用的优化器,损失函数和准确率评测标准。

    model.compile(optimizer='adam',  # 优化器为adam优化器
                  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),  # 损失函数为交叉熵,
                  # from_logits,True表示是原始数据,系统帮忙做SoftMax再进行计算
                  metrics=['accuracy']  # metrics标注网络评价指标真实值和预测值都是数值
                  )
    

    训练模型,并将各个轮次的数据用history接收。

    
    history = model.fit(train_images, train_labels, epochs=10,
                        # validation_data形式为元组,是指定的验证集
                        validation_data=(test_images, test_labels))
    

    评估模型

    将训练集和测试集的精确度和训练轮次的对照关系折线图绘制出来。

    plt.plot(history.history['accuracy'], label='accuracy')
    plt.plot(history.history['val_accuracy'], label='val_accuracy')
    plt.xlabel('Epochs')
    plt.ylabel('Accuracy')
    plt.ylim([0.5, 1])
    plt.legend(loc='lower right')
    plt.show()
    
    

    详细的代码和效果参考博文:cnn实现图像分类

    展开全文
  • 论文基于注意力机制的卷积神经网络模型源代码 要求 python2.7 keras 2.0 斯克莱恩 麻木 keras后端= theano 论文中提出一种基于注意力机制的卷积神经网络模型 文件说明: 先生:电影评论数据集,分为两个文件,一个...
  • 纯手写卷积神经网络,未使用任何神经网络框架,使用numpy纯手写卷积神经网络,研究此代码可充分搞懂卷积神经网络原理,本人也是通过此代码亲自走过来的。代码简单。 适用人群:适用于有意愿彻底搞懂卷积神经网络底层...
  • CNN实现MNIST分类,在测试集上实现准确率0.99,TensorFlow实现,容易上手
  • 卷积神经网络代码的学习,运用mnist数据集
  • PythonCNN卷积神经网络代码实现
  • 卷积神经网络的MATLAB代码,现有的代码大都是基于Python或者R编写的。
  • CNN卷积神经网络训练模型,python语言编程,粗略训练,入门难度。
  • 时序预测 | MATLAB实现CNN(卷积神经网络)时间序列预测(完整源码和数据) 数据为一维时序列数据,运行环境MATLAB2018b及以上。
  • 肺结节分类的多尺度卷积神经网络
  • 卷积神经网络代码

    热门讨论 2012-04-19 09:19:00
    卷积神经网络的源代码 ConvNet - C++ Convolutional Neural Network Library Description of the contents: compile.sh script that compiles the ConvNet library CMakeLists.txt main file describing build ...
  • 卷积神经网络matlab代码 不需要配置,直接将工作目录设为这个压缩包的解压完的目录下就行,matlab直接运行
  • 卷积神经网络代码Matlab 人工神经网络 使用空间光谱深度残差卷积神经网络(HSID-CNN)的用于高光谱图像降噪的Matlab演示代码,IEEE TGRS,2019。 By Qiang Zhang (whuqzhang@gmail.com) Wuhan University, China. ...
  • 基于卷积神经网络的手写数字识别python代码实现 卷积神经网络(Convolutional Neural Network,CNN)中,卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的连接是非全连接的,且同一层中某些神经元...
  • 基于matlab与深度学习的卷积神经网络代码
  • 采用一维卷积神经网络对癫痫脑电信号段进行分类
  • CNN_DigitHandwrite 使用卷积神经网络训练MNIST数据集
  • 对于卷积神经网络(CNN)而言,相信很多读者并不陌生,该网络近年来在大多数领域都表现优异,尤其是在计算机视觉领域中。但是很多工作人员可能直接调用相关的深度学习工具箱搭建卷积神经网络模型,并不清楚其中具体...
  • 卷积神经网络matlab代码下载

    热门讨论 2014-05-19 22:19:45
    卷积神经网络的matlab代码,直接可运行
  • 基于卷积神经网络的轴承故障诊断算法模型研究源代码。 main为wdcnn卷积神经网络主文件,运行它就可以 preprocess为预处理文件,主要实现制作数据集的功能 日志文件保存在logs里面,通过启动tensorboard查看 wdcnn....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,375
精华内容 27,750
关键字:

卷积神经网络代码