2016-12-17 8 views
0

この質問は、TensorFlowをイメージに使用するGANの実装例です。次のGANモデルでは `y_dim`とは何を表していますか?

コンテキストを提供するのに十分だと思ったコードの一部を抜粋しました。reference for full code次のコードでは、弁別器関数を定義しています。これは、典型的な畳み込みニューラルネットワークと見なすことができます。それが見られるように、弁別者の操作はy_dimにあり、は誰かがy_dimを説明するのに役立つかもしれませんか? Argsを見ると、私はまだy_dimの定義について非常に混乱しています。

class DCGAN(object): 
    def __init__(self, sess, image_size=108, is_crop=True, 
       batch_size=64, sample_size=64, output_size=64, 
       y_dim=None, z_dim=100, gf_dim=64, df_dim=64, 
       gfc_dim=1024, dfc_dim=1024, c_dim=3, dataset_name='default', 
       checkpoint_dir=None, sample_dir=None): 
     """ 

     Args: 
      sess: TensorFlow session 
      batch_size: The size of batch. Should be specified before training. 
      output_size: (optional) The resolution in pixels of the images. [64] 
      y_dim: (optional) Dimension of dim for y. [None] 
      z_dim: (optional) Dimension of dim for Z. [100] 
      gf_dim: (optional) Dimension of gen filters in first conv layer. [64] 
      df_dim: (optional) Dimension of discrim filters in first conv layer. [64] 
      gfc_dim: (optional) Dimension of gen units for for fully connected layer. [1024] 
      dfc_dim: (optional) Dimension of discrim units for fully connected layer. [1024] 
      c_dim: (optional) Dimension of image color. For grayscale input, set to 1. [3] 
     """ 
     ... 

    def discriminator(self, image, y=None, reuse=False): 
     if reuse: 
      tf.get_variable_scope().reuse_variables() 

     if not self.y_dim: 
      h0 = lrelu(conv2d(image, self.df_dim, name='d_h0_conv')) 
      h1 = lrelu(self.d_bn1(conv2d(h0, self.df_dim * 2, name='d_h1_conv'))) 
      h2 = lrelu(self.d_bn2(conv2d(h1, self.df_dim * 4, name='d_h2_conv'))) 
      h3 = lrelu(self.d_bn3(conv2d(h2, self.df_dim * 8, name='d_h3_conv'))) 
      h4 = linear(tf.reshape(h3, [self.batch_size, -1]), 1, 'd_h3_lin') 

      return tf.nn.sigmoid(h4), h4 
     else: 
      yb = tf.reshape(y, [self.batch_size, 1, 1, self.y_dim]) 
      x = conv_cond_concat(image, yb) 

      h0 = lrelu(conv2d(x, self.c_dim + self.y_dim, name='d_h0_conv')) 
      h0 = conv_cond_concat(h0, yb) 

      h1 = lrelu(self.d_bn1(conv2d(h0, self.df_dim + self.y_dim, name='d_h1_conv'))) 
      h1 = tf.reshape(h1, [self.batch_size, -1]) 
      h1 = tf.concat(1, [h1, y]) 

      h2 = lrelu(self.d_bn2(linear(h1, self.dfc_dim, 'd_h2_lin'))) 
      h2 = tf.concat(1, [h2, y]) 

      h3 = linear(h2, 1, 'd_h3_lin') 

      return tf.nn.sigmoid(h3), h3 

答えて

0

y_dimはラベルの長さです。

DCGANクラスでは、「トレーニングラベルの数を知っていますか?」と言われています。これを行うと、既知の次元ですべてのテンソルを定義することができます。

など。 MNISTデータセットが使用されているmain.pyファイルを見てください。 y_dimが0〜9のラベルに対して10に設定されていることを確認してください。 2番目のオプションは「なし」です。

これが役に立ちます。

関連する問題