class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 6, kernel_size=5)     # 畳み込み層
        self.conv2 = nn.Conv2d(6, 16, kernel_size=5)    # 畳み込み層
        self.dropout = nn.Dropout2d()                   # ドロップアウト
        self.fc1 = nn.Linear(256, 64)                   # 全結合層
        self.fc2 = nn.Linear(64, 1)                     # 全結合層
        self.hybrid = Hybrid(qiskit.Aer.get_backend('qasm_simulator'), 
                             100, np.pi / 2)  # 量子回路層

    def forward(self, x):
        x = F.relu(self.conv1(x))     # 活性化関数（ReLu）
        x = F.max_pool2d(x, 2)        # マックスプーリング
        x = F.relu(self.conv2(x))     # 活性化関数（ReLu）
        x = F.max_pool2d(x, 2)        # マックスプーリング
        x = self.dropout(x)           # ドロップアウト
        x = x.view(1, -1)             # サイズ調整をする
        x = F.relu(self.fc1(x))       # 活性化関数（ReLu）
        x = self.fc2(x)               # 最後は活性化関数なし
        x = self.hybrid(x)            # 量子回路層
        return torch.cat((x, 1 - x), -1)