创建 LeNet 10 神经网络

问题描述

我正在尝试使用 Gluon API 在 MXNet 中编写一个训练循环,并编写一个验证循环来评估经过训练的网络。

我目前正在尝试定义网络。我需要定义一个基于 LeNet 架构的网络,而不是原始 MNIST 数据的 10 个输出层,我应该有 2 个输出层。

我真的不知道该怎么做。我在创建网络时尝试包括 Flatten 和 Dense,但无论如何我都会收到以下错误。是否与 Conv2D 和 MaxPool2D 层中的某些设置有关?

编辑:在搞了更多之后,我现在认为它与损失函数有关...

def get_network():
    """
    Should create the LeNet 10 network but with 2 output units instead of 10 and return a classification loss function
    
    :return: the network and the loss function
    :rtype: (gluon.Block,gluon.Block)
    """
    
    net = None
    loss_fn = None
    
    # create a network
    net = nn.Sequential()
    
    net.add(
        nn.Conv2D(channels=6,kernel_size=5,activation='relu'),nn.MaxPool2D(pool_size=2,strides=2),nn.Conv2D(channels=16,kernel_size=3,strides=2)  
    )
    
    net.initialize(init=init.Xavier())
    
    # choose and set loss_fn for a classification task
    loss_fn = gluon.loss.SoftmaxCrossEntropyLoss()
    
    return net,loss_fn
n,loss_fn = get_network()

assert isinstance(n[0],nn.Conv2D)
assert isinstance(n[2],nn.Conv2D)
assert isinstance(n[1],nn.MaxPool2D)
assert isinstance(n[3],nn.MaxPool2D)

for l in n[-3:]:
    assert isinstance(l,nn.Dense)

我收到以下错误:

AssertionError                            Traceback (most recent call last)
<ipython-input-29-e1d75f4e8660> in <module>
      7 
      8 for l in n[-3:]:
----> 9     assert isinstance(l,nn.Dense)

AssertionError:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)