Discriminator
Sau khi đã định nghĩa generator, bước tiếp theo để xây dựng GAN là tạo discriminator. Nó nhận đầu ra của generator làm đầu vào và đưa ra dự đoán nhị phân: đầu vào là ảnh sinh ra hay ảnh thật?
Bạn đã có sẵn torch.nn được nhập dưới tên nn. Bạn cũng có thể dùng hàm disc_block() tùy chỉnh, trả về một khối gồm một lớp tuyến tính tiếp theo là kích hoạt LeakyReLU. Bạn sẽ dùng nó như một khối xây dựng cho discriminator.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
Bài tập này là một phần của khóa học
Deep Learning cho Ảnh với PyTorch
Hướng dẫn bài tập
- Thêm khối discriminator cuối cùng vào mô hình với kích thước đầu vào phù hợp và đầu ra là
256. - Sau khối discriminator cuối cùng, thêm một lớp tuyến tính để ánh xạ đầu ra về kích thước
1. - Định nghĩa phương thức
forward()để truyền ảnh đầu vào qua khối tuần tự đã định nghĩa trong__init__().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
class Discriminator(nn.Module):
def __init__(self, im_dim):
super(Discriminator, self).__init__()
self.disc = nn.Sequential(
disc_block(im_dim, 1024),
disc_block(1024, 512),
# Define last discriminator block
____,
# Add a linear layer
____,
)
def forward(self, x):
# Define the forward method
____