我是mxnet的新手,我正在尝试执行以下代码:
from mxnet import nd, sym
from mxnet.gluon import nn
class HybridNet(nn.HybridBlock):
def __init__(self, **kwargs):
super(HybridNet, self).__init__(**kwargs)
self.hidden = nn.Dense(10)
self.output = nn.Dense(2)
def hybrid_forward(self, F, x):
print('F: ', F)
print('x: ', x.shape)
x = F.relu(self.hidden(x))
print('hidden: ', x.shape)
x = F.relu(self.hidden(x))
print('hidden: ', x.shape)
return self.output(x)
net = HybridNet()
net.initialize()
x = nd.random.normal(shape=(1, 4))
net(x)
但是,它得到了以下错误: MXNetError:形状不一致,提供的=[10,4],推断的形状=(10,10)
但如果我改变了自我隐藏= nn.密集型(10) 至自我隐藏= nn.密集型(4) ,错误将不再存在。 但我不明白为什么,有人能向我解释吗? 谢谢
问题是使用不同大小的输入重复使用同一个隐藏层两次。你知道吗
x = F.relu(self.hidden(x))
时,隐藏层会自动发现您的输入大小是4,因为您的输入:x = nd.random.normal(shape=(1, 4))
。你知道吗要解决此问题,请引入另一个任意大小的隐藏层:
相关问题 更多 >
编程相关推荐