Tại sao cần placeholder tensorflow
So far we have used Show
This example works a little differently from our previous ones, let’s break it down. First, we import Then, we create a Tensor called, which is the operation of multiplying We now have an operation ( Running Placeholders do not need to be statically sized. Let’s update our program to allow x to take on any length. Change the definition of
Now, when we define the values of Placeholders can also have multiple dimensions, allowing for storing arrays. In the following example, we create a 3 by 2 matrix, and store some numbers in it. We then use the same operation as before to do element-wise doubling of the numbers.
The first dimension of the placeholder is We can extend this to take an arbitrary number of
1) Take a look at the other functions for arrays in TensorFlow at the official documentation. 2) Break the image apart into four “corners”, then stitch it back together again. 3) Convert the image into grayscale. One way to do this would be to take just a single colour channel and show that. Another way would be to take the average of the three channels as the gray colour. Generative Discriminative Networks - GANsGANs là gì?GANs là một thuật toán học không giám sát (Unsupersived Learning) được Ian Goodfellow giới thiệu vào năm 2014 tại hội nghị NIPS, trong đó bao gồm hai thành phần chính là Generator và Discriminator:
Một cách toán học: Giả sử ta có z∈Zz \in Z có z∼pZ(z)z \sim p_Z(z), dữ liệu cho trước xx có x∼pdata(x)x \sim p_{data}(x) (xx gọi là real data). Ta có GG sẽ ánh xạ zz không gian dữ liệu cho trước x^=G(z)\hat{x}=G(z) (x^\hat{x} gọi là fake data). D(x)D(x) là xác suất mà xx là real data hay fake data. Mục tiêu của GANs là làm sao cho GG cố gắng tạo ra được x^\hat{x} sao cho DD không còn thể phân biệt được là fake data. Tối ưu GG và DD giống như trò chơi minimaxminimax với hàm mục tiêu V (D,G)V(D, G), trong đó GG cố gắng làm tăng xác suất mà x^\hat{x} được tạo ra là real data và DD thì cố gắng làm điều ngược lại. minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pZ(z)[ log(1−D(G(z)))] \min_{G} \max_{D} V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[log D(x)] + \mathbb{E}_{z \sim p_Z(z)}[log(1 - D(G(z)))] Tối ưu GANsQúa tình tối ưu GANs cũng khá đơn giản:
Minh hoạ bằng Python với TensorflowSau đây mình sẽ minh hoạ GAN với tập dữ liệu MNIST. Toàn bộ mã nguồn có thể tìm được tại đây Trước tiên mình cần cài đặt thư viện Tensorflow cho Python
Trước tiên ta cần khai bái các thư viện cần thiết:
Ta cần định nghĩa GG và DD , ở đây mình sử dụng một mạng truyền thẳng (feed-forward) đơn giản với một lớp ẩn:
Ta đinh nghĩa các hyperparameters cần thiết:
Sau đó ta khởi tạo mạng:
Sau đó ta định nghĩa hàm mất cho Generator và Discriminator. Ở đây mình sử dụng Adam Optimizer để tối ưu GG và DD.
Sau đó ta tiến hành tối ưu GG và DD
Ứng dụng của GANs và Những điều lưu ýTrong những năm gần đây, GAN đã có những ứng dụng mạnh mẽ trong nhiều bài toán như Image Super Resolution, Image Translation, Domain Adaptaion. Tuy nhiên để tối ưu GANs là điều không phải dễ, điều này đòi hỏi về phần cứng cũng như sự phân tích bài toán:
Bài viết này chỉ cung cấp một khái niệm và ví dụ cơ bản nhất về GANs, nếu có gì sai sót mong các bạn có thể đóng góp kiến. Tác giảTrương
Thành Đạt Tham khảo
|