以下のコードでMNISTに対してCNNで学習を行なっているのですが、計算グラフ(cg.png)を見るとconcatの後のLinearからしか出力されておらず、訓練データでの精度も低いままになります。モデルの作り方がおかしいのでしょうか。

class CNN(Chain):

    def __init__(self):
        super(CNN, self).__init__()

        with self.init_scope():
            # 分岐1
            self.cna1 = L.Convolution2D(1, 20, 5)
            self.cna2 = L.Convolution2D(20, 50, 5)
            self.fca1 = L.Linear(800, 500)

            #  分岐2
            self.cnb1 = L.Convolution2D(1, 20, (5, 15))
            self.cnb2 = L.Convolution2D(20, 50, (5, 7))
            self.fcb1 = L.Linear(400, 300)

            # 分岐結合後
            self.fc1 = L.Linear(800, 500)
            self.fc2 = L.Linear(500, 10)

    def __call__(self, x):
        # 分岐1
        ha1 = F.max_pooling_2d(F.relu(self.cna1(x)), 2)
        ha2 = F.max_pooling_2d(F.relu(self.cna2(ha1)), 2)
        ha3 = F.dropout(F.relu(self.fca1(ha2)))

        # 分岐2
        hb1 = F.max_pooling_2d(F.relu(self.cnb1(x)), 2)
        hb2 = F.relu(self.cnb2(hb1))
        hb3 = F.dropout(F.relu(self.fcb1(hb2)))

        # 分岐結合
        h = F.concat([ha3, hb3], axis=1).data

        hab1 = F.dropout(F.relu(self.fc1(h)))

        return self.fc2(hab1)