2

入力: 10 個の「母音」のセット、10 個の「子音」のセット、すべての画像に 1 つの母音と 1 つの子音の両方が書き込まれている画像データセット。

タスク: 与えられた画像から母音と子音を識別します。

アプローチ: 最初に画像に CNN 隠れ層を適用し、次に 2 つの並列の全結合/密層を適用します。1 つは画像内の母音を分類し、もう 1 つは画像内の子音を分類します。

問題: VGG や GoogleNet などの事前トレーニング済みモデルを使用しています。その事前トレーニング済みモデルを変更して、2 つの並列高密度レイヤーを適用し、2 つの出力を返す方法。

私は 2 つの異なるモデルを試しましたが、私の質問は、このタスクのために事前トレーニング済みのモデルを変更できるかということです。

現在、私のモデルには「fc」レイヤーが 1 つしかありません。このように、最終的な「fc」レイヤーのニューロン数を変更しました

final_in_features = googlenet.fc.in_features

googlenet.fc = nn.Linear(final_in_features, 10)

ただし、両方の「fc」レイヤーが非表示レイヤーと並列に接続されるように、もう 1 つ fc レイヤーを追加する必要があります。

現在、モデルは 1 つの出力のみを返します。

outputs1 = googlenet(inputs)

タスクは、両方の「fc」レイヤーから 2 つの出力を返すことで、次のようになります。

outputs1, outputs2 = googlenet(inputs)
4

2 に答える 2

0
class DoubleLinear(torch.nn.Module):
    def __init__(self, Linear1, Linear2):
        super(DoubleLinear, self).__init__()
        self.Linear1 = Linear1
        self.Linear2 = Linear2

    def forward(self, input):
        return self.Linear1(input), self.Linear2(input)


in_features = model._fc.in_features

Linear_first = nn.Linear(in_features, 10)
Linear_second = nn.Linear(in_features, 5)

model._fc = DoubleLinear(Linear_first, Linear_second)
于 2019-08-28T10:06:09.200 に答える