ハンズオン学習pytorch - (2)ソフトマックスと分類モデル

  あまりにも多くのコンテンツは、重要な話を拾います。

  通常、数値的に離散カテゴリを表明分類問題では、ここでは2つの問題があります。出力値の1.適用範囲は、値の重要性を判断することは困難で、不確定です。2.タグは、個別実数値、測定が困難離散値および不確定の出力値の範囲との間の誤差です。

  ソフトマックスオペレータは両方の問題を解決します。これは、出力値と正の値と確率分布となります。

 

  分類問題のために、機能は、サンプルB、C出力、単層完全接続ネットワークは、次いで、(重量)W B *はB(偏差)は、Cが存在すると仮定する。

  データベクトル計算の少量を作るために、多くの場合、計算効率を改善するために。ソフトマックス回帰ベクトルの計算式は次の通りです。

 

  次のように、クロスエントロピー損失関数の損失を計算します。

 

 

 

 

   

  最後に、簡単なソフトマックス実装の話:

輸入トーチ
 からトーチ輸入NN
 から torch.nn 輸入のinit
 輸入のNPとしてnumpyの
 輸入SYS
sys.path.append(" /ホーム/ kesci /入力" 輸入D2Lとしてd2lzh1981
 からコレクションのインポートOrderedDict

BATCH_SIZE = 256 
train_iter、test_iter = d2l.load_data_fashion_mnist(BATCH_SIZE)

num_inputs = 784 
num_outputs = 10

クラスLinearNet(nn.Module):
     デフ __init__ (自己、num_inputs、num_outputs):
        スーパー(LinearNet、自己)。__init__ ()
        self.linear = nn.Linear(num_inputs、num_outputs)
     DEFフォワード(自己、X): X的形状:(バッチ、1、28、28) 
        Y = self.linear(x.view(x.shape [0] 、-1 ))
         戻りY

クラスFlattenLayer(nn.Module):
     デフ __init__ (自己):
        スーパー(FlattenLayer、自己)。__init__ ()
     デフ前方(自己、X): X的形状:(バッチ、*、*、...)
        の戻り x.view(x.shape [0]、-1 

ネット = nn.Sequential(
        FlattenLayer()、 
        LinearNet(num_inputs、num_outputs)
        OrderedDict([' フラット化' 、FlattenLayer())、' 線形' 、nn.Linear(num_inputs、num_outputs))])

init.normal_(net.linear.weight、平均 = 0、STD = 0.01 
init.constant_(net.linear.bias、ヴァル = 0)

損失 = nn.CrossEntropyLoss()
オプティマイザ = torch.optim.SGD(net.parameters()、LR = 0.1 
num_epochs = 5

d2l.train_ch3(ネット、train_iter、test_iter、損失、num_epochs、BATCH_SIZE、なし、なし、オプティマイザ)

 

 プラットフォームからの抜粋。

 

おすすめ

転載: www.cnblogs.com/ljwgis/p/12301434.html