Javascript 如何在Tensorflow.js中训练卷积生成的对抗网络?
我正在上学习教程。Javascript 如何在Tensorflow.js中训练卷积生成的对抗网络?,javascript,node.js,tensorflow.js,generative-adversarial-network,Javascript,Node.js,Tensorflow.js,Generative Adversarial Network,我正在上学习教程。 虽然本教程是用python编写的,但我尝试在node.js上使用tensorflow.js实现它。 我已经能够理解如何翻译所使用的大多数方法,除了在实际设置以下培训步骤过程时 #注意'tf.function'的用法` #此注释导致函数被“编译”。 @功能 def系列步骤(图像): 噪音=tf.随机.正常([批次大小,噪音大小]) tf.GradientTape()作为gen_磁带,tf.GradientTape()作为disc_磁带: 生成的图像=生成器(噪声,训练=真) 真
虽然本教程是用python编写的,但我尝试在node.js上使用tensorflow.js实现它。
我已经能够理解如何翻译所使用的大多数方法,除了在实际设置以下培训步骤过程时
#注意'tf.function'的用法`
#此注释导致函数被“编译”。
@功能
def系列步骤(图像):
噪音=tf.随机.正常([批次大小,噪音大小])
tf.GradientTape()作为gen_磁带,tf.GradientTape()作为disc_磁带:
生成的图像=生成器(噪声,训练=真)
真实输出=鉴别器(图像,训练=真实)
假_输出=鉴别器(生成的_图像,训练=真)
发电机损耗=发电机损耗(假输出)
光盘损耗=鉴别器损耗(真实输出、假输出)
发电机梯度=发电机磁带梯度(发电机损耗、发电机可训练变量)
鉴别器的梯度=盘带梯度(盘损耗、鉴别器、可训练变量)
生成器\优化器。应用\梯度(zip(生成器、生成器的梯度\可训练\变量))
鉴别器\优化器。应用\梯度(zip(鉴别器的梯度,鉴别器。可训练的\变量))
显然,这里并非所有内容都可以翻译为tensorflow.js。到目前为止,我无法确定如何获得梯度并将其应用于优化器。
我曾尝试使用
tf.grad
和tf.grads
函数,但没有效果。以下是我目前掌握的情况:
功能训练步骤(图像){
常数噪声=tf.randomNormal([BATCH_SIZE,noiseDim]);
const generated=gen.apply(noise,{training:true});
const realOut=dis.apply(图像,{training:true});
const genOut=dis.apply(生成,{training:true});
const genLoss=发电机损耗(genOut);
const disposs=鉴别器丢失(realOut,genOut);
//现在怎么办?
}
在tensorflow.js中有没有比指南中显示的更好的方法
如果有人能为我指出正确的方向,我将不胜感激。请尝试TensorFlow.js的官方代码库:
这是针对MNIST的,但一旦您了解了这一点,就可以将其应用于您自己的数据集。请尝试TensorFlow.js的官方代码实验室: 这是针对MNIST的,但一旦您了解了这一点,就可以应用于您自己的数据集