栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获得喀拉斯山脉的梯度?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获得喀拉斯山脉的梯度?

您需要创建一个符号Keras函数,将输入/输出作为输入并返回渐变。这是一个工作示例:

import numpy as npimport kerasfrom keras import backend as Kmodel = keras.Sequential()model.add(keras.layers.Dense(20, input_shape = (10, )))model.add(keras.layers.Dense(5))model.compile('adam', 'mse')dummy_in = np.ones((4, 10))dummy_out = np.ones((4, 5))dummy_loss = model.train_on_batch(dummy_in, dummy_out)def get_weight_grad(model, inputs, outputs):    """ Gets gradient of model for given inputs and outputs for all weights"""    grads = model.optimizer.get_gradients(model.total_loss, model.trainable_weights)    symb_inputs = (model._feed_inputs + model._feed_targets + model._feed_sample_weights)    f = K.function(symb_inputs, grads)    x, y, sample_weight = model._standardize_user_data(inputs, outputs)    output_grad = f(x + y + sample_weight)    return output_graddef get_layer_output_grad(model, inputs, outputs, layer=-1):    """ Gets gradient a layer output for given inputs and outputs"""    grads = model.optimizer.get_gradients(model.total_loss, model.layers[layer].output)    symb_inputs = (model._feed_inputs + model._feed_targets + model._feed_sample_weights)    f = K.function(symb_inputs, grads)    x, y, sample_weight = model._standardize_user_data(inputs, outputs)    output_grad = f(x + y + sample_weight)    return output_gradweight_grads = get_weight_grad(model, dummy_in, dummy_out)output_grad = get_layer_output_grad(model, dummy_in, dummy_out)

我编写的第一个函数返回了模型中的所有渐变,但是扩展它并不难,因此它支持图层索引。但是,这可能很危险,因为此索引将忽略模型中没有权重的任何图层,并且最终在模型和渐变中将具有不同的图层索引。
我编写的第二个函数在给定层的输出处返回渐变,那里的索引与模型中的相同,因此可以安全地使用它。

注意 :该版本适用于Keras 2.2.0,而不是低于该版本,因为此发行版包括以下主要重构:

keras.engine



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号