多层感知机的复杂实现
注:t.my_ones_packages是我自己根据《动手学深度学习》目前学习过程中出现的所有自定义函数进行集中得到的文档。
《动手学深度学习》也向读者提供了一个包含所有自定义函数的包“d2lzh”大家可以自行下载 侵删 链接如下 :link. 提取码: un5p 时间设置是永久的 如果失效可以联系我更新
import t.my_ones_packages as mop
from mxnet import nd
from mxnet.gluon import loss as gloss
# 读取数据
batch_size = 256
train_iter, test_iter = mop.load_data_fashion_mnist(batch_size) # 在网上获取FASHION_MINIS数据
# 定义模型函数
num_inputs, num_outputs, num_hiddens = 784, 10, 256 # FASHION_MINIST的图像是 28*28 的 有10个类别,设置隐藏单元个数为256个
W1 = nd.random.normal(scale=0.01, shape=(num_inputs, num_hiddens))
b1 = nd.zeros(num_hiddens)
W2 = nd.random.normal(scale=0.01, shape=(num_hiddens, num_outputs))
b2 = nd.zeros(num_outputs)
params = [W1, b1, W2, b2]
for param in params:
param.attach_grad()
# 定义激活函数
def relu(x):
return nd.maximum(x, 0)
# 定义模型
def net(x):
x= x.reshape((-1, num_inputs))
h = relu(nd.dot(x, W1) + b1)
return nd.dot(h, W2) + b2
# 定义损失函数
loss = gloss.SoftmaxCrossEntropyLoss() # gluon内置的 计算softmax和交叉熵损失的函数 数值稳定性更好
#训练模型
num_epochs = 5 # 设置迭代周期为5
lr = 0.5 # 学习率为0.5
mop.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, params, lr)
#该函数在我的文章 深度学习笔记(2)中有具体实现代码 有兴趣的可以自行查看
多层感知机的简单实现
import t.my_ones_packages as mop
from mxnet import gluon, init
from mxnet.gluon import loss as gloss, nn
net = nn.Sequential() # Seqential是容器
# Dense(units, activation=None, use_bias=True, flatten=True, dtype='float32', weight_initializer=None, bias_initializer='zeros', in_units=0, **kwargs)
# Dense(输出空间的维数 激活函数 是否使用偏差向量,默认True 输入向量是否需要降维处理,默认True)
net.add(nn.Dense(256, activation='relu'))# 添加隐藏层 隐藏单元个数为256个 激活函数为 relu函数
net.add(nn.Dense(10)) # 添加输出层,输出层单元个数为10
net.initialize(init.Normal(sigma=0.01)) # 初始化模型参数,设置每个模型参数的元素随机采样于均值为0 标准差为0.01的正态分布
batch_size = 256
train_iter, test_iter = mop.load_data_fashion_mnist(batch_size)
loss = gloss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate' : 0.5})
num_epochs = 5
mop.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, None, None, trainer)
#该函数在我的文章 深度学习笔记(2)中有具体实现代码 有兴趣的可以自行查看