InfoGAN详解与实现(采用tensorflow2

x = inputs

for filters in layer_filters:

if filters == layer_filters[-1]:

strides = 1

else:

strides = 2

x = keras.layers.LeakyReLU(0.2)(x)

x = keras.layers.Conv2D(filters=filters,

kernel_size=kernel_size,

strides=strides,

padding=‘same’)(x)

x = keras.layers.Flatten()(x)

outputs = keras.layers.Dense(1)(x)

if activation is not None:

print(activation)

outputs = keras.layers.Activation(activation)(outputs)

if num_labels:

layer = keras.layers.Dense(layer_filters[-2])(x)

labels = keras.layers.Dense(num_labels)(layer)

labels = keras.layers.Activation(‘softmax’,name=‘label’)(labels)

1-dim continous Q of 1st c given x

code1 = keras.layers.Dense(1)(layer)

code1 = keras.layers.Activation(‘sigmoid’,name=‘code1’)(code1)

1-dim continous Q of 2nd c given x

code2 = keras.layers.Dense(1)(layer)

code2 = keras.layers.Activation(‘sigmoid’,name=‘code2’)(code2)

outputs = [outputs,labels,code1,code2]

return keras.Model(inputs,outputs,name=‘discriminator’)

模型构建

#mi_loss

def mi_loss(c,q_of_c_give_x):

“”"mi_loss = -c * log(Q(c|x))

“”"

return K.mean(-K.sum(K.log(q_of_c_give_x + K.epsilon()) * c,axis=1))

def build_and_train_models(latent_size=100):

“”"Load the dataset, build InfoGAN models,

Call the InfoGAN train routine.

“”"

(x_train,y_train),_ = keras.datasets.mnist.load_data()

image_size = x_train.shape[1]

x_train = np.reshape(x_train,[-1,image_size,image_size,1])

x_train = x_train.astype(‘float32’) / 255.

num_labels = len(np.unique(y_train))

y_train = keras.utils.to_categorical(y_train)

#超参数

model_name = ‘infogan_mnist’

batch_size = 64

train_steps = 40000

lr = 2e-4

decay = 6e-8

input_shape = (image_size,image_size,1)

label_shape = (num_labels,)

code_shape = (1,)

#discriminator model

inputs = keras.layers.

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值