import mxnet as mximport sysfrom mxnet import autograd,ndfrom mxnet import gluon,initfrom mxnet.gluon import nn,loss as glossfrom mxnet.gluon import data as gdata# 读取数据mnist_train = gdata.vision.FashionMNIST(train=True)mnist_test = gdata.vision.FashionMNIST(train=False)batch_size = 256trainsformer = gdata.vision.transforms.ToTensor()if sys.platform.startswith(‘win‘): ???num_workers = 0else: ???num_workers = 4train_iter = gdata.DataLoader(mnist_train.transform_first(trainsformer),batch_size=batch_size,shuffle=True,num_workers=num_workers)test_iter = gdata.DataLoader(mnist_test.transform_first(trainsformer),batch_size=batch_size,shuffle=False,num_workers=num_workers)# 使用GPUdef try_gpu(): ???try: ???????ctx = mx.gpu() ???????_ = nd.zeros((1,),ctx=ctx) ???except mx.base.MXNetError: ???????ctx = mx.cpu() ???return ctx# 计算正确率def accuracy(y_hat,y): ???return (y_hat.argmax(axis=1)==y.astype(‘float32‘).mean().asscalar())def evaluate_accuracy(data_iter,net,ctx): ???acc = nd.array([0],ctx=ctx) ???for X,y in data_iter: ???????X = X.as_in_context(ctx) ???????y = y.as_in_context(ctx) ???????acc += accuracy(net(X),y) ???return acc.asscalar() / len(data_iter)# LeNet,建立卷积神经网络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), ???????# Dense 会默认将(批量大小,通道,高,宽)形状的输入转换成 ???????# (批量大小,通道 * 高 * 宽)形状的输入。 ???????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:\t‘,X.shape)K = nd.array([[[0, 1], [2, 3]], [[1, 2], [3, 4]]])K = nd.stack(K, K + 1, K + 2)print(K)
LeNet
原文地址:https://www.cnblogs.com/TreeDream/p/10043092.html