Back to Annotated Deep Learning Paper Implementations

වොසර්ස්ටයින්GAN (WGAN-GP) සඳහා ග්රේඩියන්ට් ද penalty ුවම

docs/si/gan/wasserstein/gradient_penalty/index.html

latest4.1 KB
Original Source

homeganwassersteingradient_penalty

[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/gan/wasserstein/gradient_penalty/ init.py)

#

වොසර්ස්ටයින්GAN (WGAN-GP) සඳහා ග්රේඩියන්ට් ද penalty ුවම

මෙය වොසර්ස්ටයින් GANs වැඩිදියුණු කළ පුහුණුවක්රියාත්මක කිරීමයි.

වෙනස්කොට සැලකීමේ ජාලයේ (විචාරක)ලිප්ස්චිට්ස් අවහිරතා බලාත්මක කිරීම සඳහා WGAN විසින් ක්ලිපින් බර යෝජනා කරයි. මෙය සහ L2 සම්මත ක්ලිපින් කිරීම, බර සාමාන්යකරණය කිරීම, L1, L2 බර ක්ෂය වීම වැනි වෙනත් බර බාධක ගැටළු ඇත:

  1. වෙනස්කම් කරන්නාගේ ධාරිතාව සීමා කිරීම 2. පුපුරා යාම සහ අතුරුදහන් වීම ( කණ්ඩායම් සාමාන්යකරණයනොමැතිව).

කඩදාසි වැඩිදියුණු කරන ලද වොසර්ස්ටයින් GANS පුහුණුව Lipschitz අවහිරතා වැඩි දියුණු කිරීම සඳහා වඩා හොඳ ක්රමයක් යෝජනා කරයි.

LGP​=λx^∼Px^​E​[(∥∇x^​D(x^)∥2​−1)2]

දpenalty λ ුවම් බර සහ කොහේද?

xzϵxx^​∼Pr​∼p(z)∼U[0,1]←Gθ​(z)←ϵx+(1−ϵ)x

ඒතමයි අපි ශ්රේණියේ සම්මතය ∥∇x^​D(x^)∥2​ සමීපව තබා ගැනීමට උත්සාහ කරමු 1.

මෙමක්රියාත්මක කිරීමේදී අපි සකස් කළෙමු ϵ=1.

ශ්රේණියේද penalty ුවම භාවිතා කරන අත්හදා බැලීමක් සඳහා කේතය මෙන්න.

46importtorch47importtorch.autograd4849fromlabml\_helpers.moduleimportModule

#

ග්රේඩියන්ට්දඬුවම

52classGradientPenalty(Module):

#

  • x වේ x∼Pr​

  • f වේ D(x)

x^←x අපි මෙම ක්රියාත්මක කිරීම ϵ=1 සඳහා සකස් කර ඇති බැවින්.

57defforward(self,x:torch.Tensor,f:torch.Tensor):

#

කණ්ඩායම්ප්රමාණය ලබා ගන්න

67batch\_size=x.shape[0]

#

සම්බන්ධයෙන්අනුක්රමික ගණනය කරන්න x. D(x) grad_outputs අපට අනුක්රමික අවශ්ය බැවින් ඒවාට සකසා ඇති අතර D(x), මෙම අලාභයේ බර සම්බන්ධයෙන් අනුක්රමික ගණනය කළ යුතු බැවින් අපි ප්රස්ථාරයක් නිර්මාණය කර රඳවා තබා ගත යුතුය.

73gradients,\*\_=torch.autograd.grad(outputs=f,74inputs=x,75grad\_outputs=f.new\_ones(f.shape),76create\_graph=True)

#

සම්මතයගණනය කිරීම සඳහා අනුක්රමික නැවත සකස් කරන්න

79gradients=gradients.reshape(batch\_size,-1)

#

සම්මතයගණනය කරන්න ∥∇x^​D(x^)∥2​

81norm=gradients.norm(2,dim=-1)

#

අලාභයආපසු ලබා දෙන්න (∥∇x^​D(x^)∥2​−1)2

83returntorch.mean((norm-1)\*\*2)

Trending Research Paperslabml.ai