あまりにも多くのコンテンツは、重要な話を拾います。
通常、数値的に離散カテゴリを表明分類問題では、ここでは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、なし、なし、オプティマイザ)
プラットフォームからの抜粋。