美文网首页
MXNet学习—卷积神经网络实现

MXNet学习—卷积神经网络实现

作者: 风就吹吧 | 来源:发表于2018-09-25 16:41 被阅读0次

一.LeNet

import gluonbook as gb
import mxnet as mx
from mxnet import autograd, gluon, init, nd
from mxnet.gluon import loss as gloss, nn
import time

net = nn.Sequential()
net.add(nn.Conv2D(channels=6, kernel_size=5, activation='sigmoid'),
        nn.MaxPool2D(pool_size=2, strides=2),
        nn.Conv2D(channels=16, kernel_size=5, activation='sigmoid'),
        nn.MaxPool2D(pool_size=2, strides=2),
        nn.Dense(120, activation='sigmoid'),
        nn.Dense(84, activation='sigmoid'),
        nn.Dense(10))

# X = nd.random.uniform(shape=(1, 1, 28, 28))
# net.initialize()
# for layer in net:
#     X = layer(X)
#     print(layer.name, 'output shape:', X.shape)
batch_size = 256
train_iter, test_iter = gb.load_data_fashion_mnist(batch_size=batch_size)


def try_gpu():
    try:
        ctx = mx.gpu()
        _ = nd.zeros((1,), ctx=ctx)
    except:
        ctx = mx.cpu()
    return ctx


ctx = try_gpu()
lr, num_epochs = 0.9, 5

net.initialize(force_reinit=True, ctx=ctx, init=init.Xavier())
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': lr})


def evaluate_accuracy(data_iter, net, ctx):
    acc = nd.array([0], ctx=ctx)
    for X, y in data_iter:
        # 如果 ctx 是 GPU,将数据复制到 GPU 上。
        X, y = X.as_in_context(ctx), y.as_in_context(ctx)
        acc += gb.accuracy(net(X), y)
    return acc.asscalar() / len(data_iter)


def train_ch5(net, train_iter, test_iter, batch_size, trainer, ctx, num_epochs):
    print('training on', ctx)
    loss = gloss.SoftmaxCrossEntropyLoss()
    for epoch in range(num_epochs):
        train_l_sum, train_acc_sum, start = 0, 0, time.time()
        for X, y in train_iter:
            X, y = X.as_in_context(ctx), y.as_in_context(ctx)
            with autograd.record():
                y_hat = net(X)
                l = loss(y_hat, y)
            l.backward()
            trainer.step(batch_size)
            train_l_sum += l.mean().asscalar()
            train_acc_sum += gb.accuracy(y_hat, y)
        test_acc = evaluate_accuracy(test_iter, net, ctx)
        print('epoch %d, loss %.4f, train acc %.3f, test acc %.3f, '
              'time %.1f sec' % (epoch + 1, train_l_sum / len(train_iter),
                                 train_acc_sum / len(train_iter),
                                 test_acc, time.time() - start))


train_ch5(net, train_iter, test_iter, batch_size, trainer, ctx, num_epochs)

相关文章

  • MXNet学习—卷积神经网络实现

    一.LeNet

  • 2020机器学习卷积神经网(1)

    卷积神经网在当下流行深度学习框架如 tensorflow mxnet 都提供 API 很容就能够实现卷积神经网,但...

  • MXNet实现卷积神经网络训练量化

    深度学习在移动端的应用是越来越广泛,由于移动端的运算力与服务器相比还是有差距,所以在移动端部署深度学习模型...

  • CNN

    参考:CNN卷积神经网络原理讲解+图片识别应用(附源码)卷积神经网络 – CNN深入学习卷积神经网络(CNN)的原...

  • tensorflow初探十之神经网络发展和气tensorflow

    第六章-神经网络的发展及其 TensorFlow 实现 6.1 卷积神经网络 卷积神经网络(CNN),它的权值共享...

  • 卷积神经网络

    参考博客: 卷积神经网络_(1)卷积层和池化层学习 - outthinker - 博客园 卷积神经网络(CNN)模...

  • RNN循环神经网络

    用RNN(循环神经网络)实现连续数据的预测(以股票预测为例) 回顾卷积神经网络 卷积就是特征提取器,就是C(卷积)...

  • # tensorflow实战笔记(二)

    实现卷积神经网络 卷积图示:LE-Net5 这个图可以利用来学习单通道卷积,例如下面mnist训练的数据仅仅用到黑...

  • CNN学习笔记

    卷积神经网络-CNN 卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习(deep learn...

  • 18- OpenCV+TensorFlow 入门人工智能图像处理

    cnn卷积神经网络实现手写数字识别 卷积层 & 池化层实现 padding参数决定卷积核是否可以停留边缘。 全连接...

网友评论

      本文标题:MXNet学习—卷积神经网络实现

      本文链接:https://www.haomeiwen.com/subject/cvcloftx.html