お世話になります。
5.5.3.のコードに、
- FIXME_1 = 64
- FIXME_2 = 128
- FIXME_3 = 128
- FIXME_4 = 128
- FIXME_5 = 128
を入力し、実行したのですが、
TypeError: __init__() missing 1 required positional argument: 'out_channels'
と表示されます。
def __init__(self, out_h, out_w, n_class=1):
のところで、out_channelsを記載する必要があると思い、
out_channels=out_h, out_w や、out_h and out_w など試してみたのですが、うまくいきません。
ど対処したらよいものでしょうか。
どなたか教えていただけませんでしょうか?
class FullyConvolutionalNetwork(chainer.Chain):
def __init__(self, out_h, out_w, n_class=1):
super().__init__()
with self.init_scope():
# L.Convolution2D(in_ch, out_ch, ksize, stride, pad)
# in_chは省略することができるので,
# L.Convolution2D(out_ch, ksize, stride, pad)
# とかくこともできます.
self.conv1 = L.Convolution2D(None, FIXME_1=64, ksize=5, stride=2, pad=2)
self.conv2 = L.Convolution2D(None, FIXME_2=128, ksize=5, stride=2, pad=2)
self.conv3 = L.Convolution2D(None, FIXME_3=128, ksize=3, stride=1, pad=1)
self.conv4 = L.Convolution2D(None, FIXME_4=128, ksize=3, stride=1, pad=1)
self.conv5 = L.Convolution2D(None, FIXME_5=128, ksize=1, stride=1, pad=0)
# L.Deconvolution2D(in_ch, out_ch, ksize, stride, pad)
# in_chは省略することができるので,
# L.Deconvolution2D(out_ch, ksize, stride, pad)
# と書くこともできます.
self.deconv6 = L.Deconvolution2D(None, n_class, ksize=32, stride=16, pad=8)
self.out_h = out_h
self.out_w = out_w
def forward(self, x):
h = F.relu(self.conv1(x))
h = F.max_pooling_2d(h, 2, 2)
h = F.relu(self.conv2(h))
h = F.max_pooling_2d(h, 2, 2)
h = F.relu(self.conv3(h))
h = F.relu(self.conv4(h))
h = self.conv5(h)
h = self.deconv6(h)
return h.reshape(x.shape[0], 1, h.shape[2], h.shape[3])
print(FullyConvolutionalNetwork(256, 256)(np.zeros((1, 1, 256, 256), dtype=np.float32)).shape[2:])
に対し、
TypeError Traceback (most recent call last)
<ipython-input-35-63c544d1354c> in <module>()
40 return h.reshape(x.shape[0], 1, h.shape[2], h.shape[3])
41
---> 42 print(FullyConvolutionalNetwork(256, 256)(np.zeros((1, 1, 256, 256), dtype=np.float32)).shape[2:])
<ipython-input-35-63c544d1354c> in __init__(self, out_h, out_w, n_class)
13 # L.Convolution2D(out_ch, ksize, stride, pad)
14 # とかくこともできます.
---> 15 self.conv1 = L.Convolution2D(None, FIXME_1=64, ksize=5, stride=2, pad=2)
16 self.conv2 = L.Convolution2D(None, FIXME_2=128, ksize=5, stride=2, pad=2)
17 self.conv3 = L.Convolution2D(None, FIXME_3=128, ksize=3, stride=1, pad=1)
TypeError: __init__() missing 1 required positional argument: 'out_channels'