Keras鉴别器序列功能-是否应连接假和真?

Keras鉴别器序列功能-是否应连接假和真?,keras,deep-learning,data-science,generative-adversarial-network,discriminator,Keras,Deep Learning,Data Science,Generative Adversarial Network,Discriminator,我注意到一些版本的鉴别器序列功能 batch_size = 100 # set_trainability D.trainable = True # create noise noise = np.abs(np.random.randn(batch_size,100)) # fake x_fake = G.predict(noise) y_fake = np.zeros((batch_size,2)) y_fake[:,0] = 1 # real x_real = np.array([sa

我注意到一些版本的鉴别器序列功能

batch_size = 100

# set_trainability
D.trainable = True

# create noise
noise = np.abs(np.random.randn(batch_size,100))

# fake
x_fake = G.predict(noise)
y_fake = np.zeros((batch_size,2))
y_fake[:,0] = 1

# real
x_real = np.array([sample_data_pp(num=100)[0] for i in range(batch_size)])
y_real = np.zeros((batch_size,2))
y_real[:,1] = 1
我应该将
假代码和真代码连接起来吗?或者“单独”培训他们。
为什么(如果有的话)这会有区别?
比如说,

D.train_on_batch(x_fake,y_fake)
D.train_on_batch(x_real,y_real)
或:


生成性对抗网络非常不稳定,如果不亲自尝试并衡量结果,就很难知道什么是有效的

也就是说,根据我的经验,区分真假样品是一种很好的做法。请参阅以获取参考

我认为,当使用批标准化(
keras.layers.BatchNormalization()
)来区分真假样本的批次统计数据时,分别使用真假样本进行培训是至关重要的

x_train = np.concatenate((x_fake,x_real))
y_train = np.concatenate((y_fake,y_real))
D.train_on_batch(x_train,y_train)