Generator loss
GAN को ट्रेन करने से पहले, आपको जेनरेटर और डिस्क्रिमिनेटर दोनों के लिए लॉस फंक्शन डिफाइन करने होंगे. आप जेनरेटर से शुरू करेंगे.
ध्यान रखें कि जेनरेटर का काम इतने यथार्थ जैसे फेक इमेज बनाना है कि डिस्क्रिमिनेटर उन्हें रियल के रूप में क्लासिफाई कर दे. इसलिए, अगर डिस्क्रिमिनेटर जेनरेटर की बनाई इमेज को फेक (लेबल 0) मान ले, तो जेनरेटर को लॉस होता है.
gen_loss() फंक्शन डिफाइन कीजिए जो जेनरेटर का लॉस कैलकुलेट करे. यह चार आर्ग्युमेंट लेता है:
gen, जेनरेटर मॉडलdisc, डिस्क्रिमिनेटर मॉडलnum_images, बैच में इमेज की संख्याz_dim, इनपुट रैंडम नॉइज़ का साइज
यह अभ्यास पाठ्यक्रम का हिस्सा है
PyTorch के साथ इमेज के लिए डीप लर्निंग
अभ्यास निर्देश
- शेप
num_imagesबाईz_dimका रैंडम नॉइज़ जनरेट करें और उसेnoiseमें असाइन करें. - जेनरेटर का उपयोग करके
noiseसे फेक इमेज जनरेट करें और उसेfakeमें असाइन करें. - जनरेट की गई फेक इमेज के लिए डिस्क्रिमिनेटर की प्रेडिक्शन लें.
- डिस्क्रिमिनेटर की प्रेडिक्शंस और उसी शेप वाले ones के टेन्सर पर
criterionकॉल करके जेनरेटर का लॉस कंप्यूट करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
def gen_loss(gen, disc, criterion, num_images, z_dim):
# Define random noise
noise = ____(num_images, z_dim)
# Generate fake image
fake = ____
# Get discriminator's prediction on the fake image
disc_pred = ____
# Compute generator loss
criterion = nn.BCEWithLogitsLoss()
gen_loss = ____(____, ____)
return gen_loss