Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#This encoder is random multinomial noise 

 

import tensorflow as tf 

 

import hyperchamber as hc 

 

from hypergan.encoders.base_encoder import BaseEncoder 

 

TINY = 1e-12 

 

class CategoryEncoder(BaseEncoder): 

def required(self): 

return "categories".split() 

 

def create(self): 

gan = self.gan 

ops = self.ops 

config = self.config 

 

categories = [self.random_category(gan.batch_size(), size, ops.dtype) for size in config.categories] 

self.categories = categories 

categories = tf.concat(axis=1, values=categories) 

self.sample = categories 

return categories 

 

def random_category(self, batch_size, size, dtype): 

prior = tf.ones([batch_size, size])*1./size 

dist = tf.log(prior + TINY) 

sample=tf.multinomial(dist, num_samples=1)[:, 0] 

return tf.one_hot(sample, size, dtype=dtype)