Advertisement

Tensorflow2.0自定义模型训练实现FGM对抗训练代码实现

阅读量:

TF版本2.2及以上要求

复制代码
    def creat_FGM(epsilon=1.0):
    @tf.function 
    def train_step(self, data):
    '''
    计算在embedding上的gradient
    计算扰动 在embedding上加上扰动
    重新计算loss和gradient
    删除embedding上的扰动,并更新参数
    '''
        data = data_adapter.expand_1d(data)
        x, y, sample_weight = data_adapter.unpack_x_y_sample_weight(data)
    	    with tf.GradientTape() as tape:
    	        y_pred = model(x,training=True)
    	        loss = loss_func(y,y_pred)
    	    embedding = model.trainable_variables[0]
    	    embedding_gradients = tape.gradient(loss,[model.trainable_variables[0]])[0]

全部评论 (0)

还没有任何评论哟~