我按照教程在 https:/www.tensorflow.orgtutorialsgenerativedcgan. 虽然这个教程是用python写的,但我正试图在node.js上使用tensorflow.js来实现它。我已经能够弄清楚如何翻译大部分使用的方法,除了在实际设置下面的训练步骤程序时。
# Notice the use of `tf.function`
# This annotation causes the function to be "compiled".
@tf.function
def train_step(images):
noise = tf.random.normal([BATCH_SIZE, noise_dim])
with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:
generated_images = generator(noise, training=True)
real_output = discriminator(images, training=True)
fake_output = discriminator(generated_images, training=True)
gen_loss = generator_loss(fake_output)
disc_loss = discriminator_loss(real_output, fake_output)
gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables)
gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables)
generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables))
discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables))
显然,这里并不是所有的东西都可以翻译成tensorflow.js。到目前为止,我还无法弄清楚如何获取梯度并将其应用到优化器中。我曾尝试使用 tf.grad
&amp。tf.grads
函数,但没有用。这是我目前掌握的情况。
function trainStep(images) {
const noise = tf.randomNormal([BATCH_SIZE, noiseDim]);
const generated = gen.apply(noise, { training: true });
const realOut = dis.apply(images, { training: true });
const genOut = dis.apply(generated, { training: true });
const genLoss = generator.loss(genOut);
const disLoss = discriminator.loss(realOut, genOut);
// now what?
}
在tensorflow.js中是否有比指南中更好的方法? 如果有谁有任何资源能给我指明正确的方向,我将感激不尽。
试试这个TensorFlow.js的官方codelab。
https:/codelabs.developers.google.comcodelabstfjs-training-classficationindex.html。
这是针对MNIST的,但是一旦你学会了,你就可以应用于你自己的数据集。