මෙය වොසර්ස්ටයින් GANs වැඩිදියුණු කළ පුහුණුවක්රියාත්මක කිරීමයි.
වෙනස්කොට සැලකීමේ ජාලයේ (විචාරක)ලිප්ස්චිට්ස් අවහිරතා බලාත්මක කිරීම සඳහා WGAN විසින් ක්ලිපින් බර යෝජනා කරයි. මෙය සහ L2 සම්මත ක්ලිපින් කිරීම, බර සාමාන්යකරණය කිරීම, L1, L2 බර ක්ෂය වීම වැනි වෙනත් බර බාධක ගැටළු ඇත:
1. වෙනස්කම් කරන්නාගේ ධාරිතාව සීමා කිරීම 2. පුපුරා යාම සහ අතුරුදහන් වීම ( කණ්ඩායම් සාමාන්යකරණයනොමැතිව).
කඩදාසි වැඩිදියුණු කරන ලද වොසර්ස්ටයින් GANS පුහුණුව Lipschitz අවහිරතා වැඩි දියුණු කිරීම සඳහා වඩා හොඳ ක්රමයක් යෝජනා කරයි.
දpenalty ුවම් බර සහ කොහේද?
ඒතමයි අපි ශ්රේණියේ සම්මතය සමීපව තබා ගැනීමට උත්සාහ කරමු .
මෙමක්රියාත්මක කිරීමේදී අපි සකස් කළෙමු .
ශ්රේණියේද penalty ුවම භාවිතා කරන අත්හදා බැලීමක් සඳහා කේතය මෙන්න.
46import torch
47import torch.autograd
48
49from labml_helpers.module import Module52class GradientPenalty(Module):57 def forward(self, x: torch.Tensor, f: torch.Tensor):කණ්ඩායම්ප්රමාණය ලබා ගන්න
67 batch_size = x.shape[0]සම්බන්ධයෙන්අනුක්රමික ගණනය කරන්න . grad_outputs
අපට අනුක්රමික අවශ්ය බැවින් ඒවාට සකසා ඇති අතර , මෙම අලාභයේ බර සම්බන්ධයෙන් අනුක්රමික ගණනය කළ යුතු බැවින් අපි ප්රස්ථාරයක් නිර්මාණය කර රඳවා තබා ගත යුතුය.
73 gradients, *_ = torch.autograd.grad(outputs=f,
74 inputs=x,
75 grad_outputs=f.new_ones(f.shape),
76 create_graph=True)සම්මතයගණනය කිරීම සඳහා අනුක්රමික නැවත සකස් කරන්න
79 gradients = gradients.reshape(batch_size, -1)සම්මතයගණනය කරන්න
81 norm = gradients.norm(2, dim=-1)අලාභයආපසු ලබා දෙන්න
83 return torch.mean((norm - 1) ** 2)