深度学习笔记(4)---自学《动手学深度学习》----多层感知机简单案例的复杂实现+简单实现(gluon实现) 内附代码片段及解释

多层感知机的复杂实现

注: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)中有具体实现代码  有兴趣的可以自行查看
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值