トーチアプリケーションパッケージ

1.torchvision.transformsは、画像前処理は、典型的には、例えば、一緒に複数のステップを統合作曲パケットが使用されるpytorch

    transforms.Compose([transforms.CenterCrop(10 )、
                                        transforms.ToTensor()])

機能で2.transforms

    サイズ変更:指定されたサイズに所定の画像サイズ変更; 
    :;ノーマライズ平均および標準偏差で正規化ANテンソル画像に
    変換するA PILイメージテンソルに(H:ToTensor * W *はCである)範囲[ 0255 Aトーチに]。テンソル(C * H * Wである)範囲[ 0.01.0 ]; 
    ToPILImage:PIL imageScaleにテンソルを変換しない:今は、ResizeCenterCrop推奨; 
    ResizeCenterCrop:画像の中央領域における作物; 
    RandomCrop:ランダム切断位置; 
    RandomHorizo​​ntalFlip:所与フリップPIL画像の確率の0.5レベル; 
    RandomVerticalFlip:所与PIL上下反転画像の0.5確率; 
    RandomResizedCrop:任意のサイズ及び画像アスペクト比にPILカット;  
    グレースケール:画像は、グレースケールに変換されます。
    RandomGrayscale。画像は、ある確率でグレースケール画像に変換されます。
    FiceCrop:角部と中心Tに画像をトリミング; 
    enCropPad:ColorJitterを充填:ランダム画像コントラスト及び彩度の明るさを変更します

デタッチ()

 私たちは変わらず、ネットワークパラメータの一部を残しておきたいこと、の一部のみがパラメータを調整しているネットワークのトレーニングを再とき、または支店網の訓練一部の値は、勾配は、メインネットワークの勾配に影響を与えることは許されません

 逆伝搬私たちは枝の一部を遮断するために、デタッチ()関数を使用する必要があり、この時

 デタッチ()[ソース]
電流算出マップから、新しい変数を返しは分離のみrequires_gradが偽で、得られた変数である以外は、元の変数の格納場所まで、それでも点勾配を計算する必要は決してありません卒業生を持っています

でもそのrequires_gradをtrueに再集合した後、それは勾配卒業生を持っていません。

私達は私達がいたとき、後で計算し、この新しい変数を使用し続ける伝播バックする変数のコール・デタッチ()に、時間を停止し、我々は前方に広がるし続けることができません、

 

トーチインポート
A = torch.tensor([1,2,3]、requires_grad =真)は、バック#を有していなければならない。3.
プリント(a.grad)
OUT = a.sigmoid()
out.sum())(後方
印刷(a.grad)

なし
テンソル([0.1966、0.1050、0.0452])


トーチインポート
A = torch.tensor([1,2,3]、requires_grad =真)は、バック#を有していなければならない。3.
プリント(a.grad)
OUT = a.sigmoid()
プリント(OUT)
加え切り離し() 、cは= FALSE require_grad
C = out.detach()
印刷(c)の無勾配#
#Cに変更なし、後方()には影響しません
)out.sumを(。後方()
印刷(a.grad)
#USE変数新しく生成されたバックプロパゲーション
c.sum()。後方()
プリント(a.grad)

なし
テンソル([0.7311、0.8808、0.9526]、grad_fn = <SigmoidBackward>)
テンソル([0.7311、0.8808、0.9526])
テンソル([0.1966、0.1050、0.0452])

例外RuntimeError:テンソルの要素0大学院生を必要とせず、grad_fnを持っていません


トーチインポート
A = torch.tensor([1,2,3]、requires_grad =真)は、バック#を有していなければならない。3.
プリント(a.grad)
OUT = a.sigmoid()
プリント(OUT)
加え切り離し() 、C = Falseのrequire_grad
C = out.detach()
プリント(C)無勾配#
c.zero_()
プリント(C)
(OUT)印刷#C変形の両方アウト値の影響
、変化なしのC#をしません後方影響を与える()
out.sum()。後方()
印刷(a.grad)

なし
テンソル([0.7311、0.8808、0.9526]、grad_fn = <SigmoidBackward>)
テンソル([0.7311、0.8808、0.9526])
テンソル([0の0、0の])
、0のテンソル([0、0 。]、grad_fn = <SigmoidBackward> )が、勾配があります

RuntimeError:勾配計算に必要な変数の一つは、インプレース操作によって改変されている:[torch.FloatTensor [3]、SigmoidBackwardの出力0であるが、バージョン1です。代わりに、バージョン0を期待。ヒント:torch.autograd.set_detect_anomaly(真)との勾配を計算するために失敗した操作を、見つけるために、異常検出を可能にします。

 

おすすめ

転載: www.cnblogs.com/tingtin/p/12286820.html