卷积神经网络的AlexNet

重要找数据集找特征(feature),卷积 graphic 计算机视觉最终是特征,机器学习并没有什么区别。特征和,机器学习可以把特征做的很好,神经网络不想自己搞查找特征需要机器学习来找特征。
李飞飞共享了 ImageNet 数据库,100 万张图片有 100 种分类,大家都来刷这个分类。没有计算能力也现在模型。
GPU 可让我们在更短时间内调更多参数。
AlexNet 实现代码如下,有关 AlexNet 设计随后有机会会给大家分享,今天开 AlexNet 有些简陋不过当初也是飞跃性的一次。今天神经网络做的越来深。

import utils
import sys
sys.path.append('..')
import random
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 120
import matplotlib.pyplot as plt
import tarfile
import os
from mxnet.gluon import data as gdata, utils as gutils

from mxnet import image
from mxnet import init

net = nn.Sequential()
with net.name_scope():
    # first phase
    net.add(nn.Conv2D(
        channels=96, kernel_size=11, strides=4, activation='relu'
    ))
    net.add(nn.MaxPool2D(pool_size=3, strides=2))
    # second phase
    net.add(nn.Conv2D(
        channels=256, kernel_size=5, padding=2, activation='relu'
    ))
    net.add(nn.MaxPool2D(pool_size=3, strides=2))
    # third phase
    net.add(nn.Conv2D(
        channels=384, kernel_size=3, padding=1, activation='relu'
    ))
    net.add(nn.Conv2D(
        channels=384, kernel_size=3, padding=1, activation='relu'
    ))
    net.add(nn.Conv2D(
        channels=256, kernel_size=3, padding=1, activation='relu'
    ))

    net.add(nn.MaxPool2D(pool_size=3,strides=2))

    #fourth phase
    net.add(nn.Flatten())
    net.add(nn.Dense(4096),activation='relu')
    net.add(nn.Dropout(.5))

    # fifth phase
    net.add(nn.Dense(4096),activation="relu")
    net.add(nn.Dropout(.5))

    # sixth
    net.add(nn.Dense(10))
from mxnet import ndarray as nd
from mxnet import autograd as ag
from mxnet import gluon
from mxnet.gluon import nn
import mxnet as mx
import utils
import sys
sys.path.append('..')
import random
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 120
import matplotlib.pyplot as plt
import tarfile
import os
from mxnet.gluon import data as gdata, utils as gutils

from mxnet import image
from mxnet import init

net = nn.Sequential()
with net.name_scope():
    # first phase
    net.add(nn.Conv2D(
        channels=96, kernel_size=11, strides=4, activation='relu'
    ))
    net.add(nn.MaxPool2D(pool_size=3, strides=2))
    # second phase
    net.add(nn.Conv2D(
        channels=256, kernel_size=5, padding=2, activation='relu'
    ))
    net.add(nn.MaxPool2D(pool_size=3, strides=2))
    # third phase
    net.add(nn.Conv2D(
        channels=384, kernel_size=3, padding=1, activation='relu'
    ))
    net.add(nn.Conv2D(
        channels=384, kernel_size=3, padding=1, activation='relu'
    ))
    net.add(nn.Conv2D(
        channels=256, kernel_size=3, padding=1, activation='relu'
    ))

    net.add(nn.MaxPool2D(pool_size=3,strides=2))

    #fourth phase
    net.add(nn.Flatten())
    net.add(nn.Dense(4096,activation='relu'))
    net.add(nn.Dropout(.5))

    # fifth phase
    net.add(nn.Dense(4096,activation="relu"))
    net.add(nn.Dropout(.5))

    # sixth
    net.add(nn.Dense(10))

batch_size = 64
def transform(data,label):
    data = image.imresize(data,224,224)
    return utils.transform(data,label)
train_data, test_data = utils.load_data_fashion_mnist(batch_size,transform)

ctx = mx.cpu()
net.initialize(ctx=ctx,init=init.Xavier())

softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(
    net.collect_params(),'sgd',{'learning_rate':0.01}
)
for epoch in range(10):
    train_loss = 0.
    train_acc = 0.
    for data, label in train_data:
        label = label.as_in_context(ctx)
        with ag.record():
            output = net(data.as_in_context(ctx))
            loss = softmax_cross_entropy(output,label)
        loss.backward()
        trainer.step(batch_size)

        train_loss += nd.mean(loss).asscalar()
        train_acc += utils.accuracy(output,label)
    test_acc = utils.evaluate_accuracy(test_data,net)
    print("Epoch %d. Loss: %f, Train acc %f, Test acc %f" % (epoch, train_loss/len(train_data), train_acc/len(train_data), test_acc))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容