python - LSTM 打印渐变 keras
问题描述
我正在尝试打印渐变,到目前为止我有这个。
my_model=load_model('word2vec_lstm.h5')
weights = my_model.weights # weight tensors
gradients = my_model.optimizer.get_gradients(my_model.total_loss, weights) # gradient tensors
input_tensors = [my_model.inputs[0], # input data
my_model.sample_weights[0], # sample weights
my_model.targets[0], # labels
K.learning_phase(), # train or test mode
]
get_gradients = K.function(inputs=input_tensors, outputs=gradients)
inputs = [[trainDataVecs], # X input data
[1], # sample weights
[Y_train], # y labels
0.005 # learning phase in TEST mode
]
print [a for a in zip(weights, get_gradients(inputs))]
但是,这给了我以下错误InvalidArgumentError: transpose expects a vector of size 4. But input(1) is a vector of size 3
解决方案
还有另一种获取 RNN 模型梯度的方法(即 LSTM)。安装see-rnn
从这里调用的库。
这个库允许您在 Keras 和 TensorFlow 中获得 RNN 权重、梯度和激活可视化。
安装
pip install see-rnn
例子
all_grads = get_gradients(rnn_model, layer_index, x, y)
print(all_grads[0][0])
#output: array([ 0.00116622, -0.00739232, -0.00163304, -0.00379695, 0.0126757 ,
-0.01117346], dtype=float32)
推荐阅读
- javascript - webpack 4 创建单独的供应商块
- python - 更新 pyqt5 中选定的列表视图项
- windows - Powershell - Start-Process ArgumentList 仅接受带空格的单个变量
- docker - 如何为 docker build 命令指定 GIT_ACCESS_TOKEN?
- maven - 无法解析插件 org.apache.maven.plugins:maven-deploy-plugin:2.7
- react-native - useInfiniteQuery 重新获取单个记录突变的所有页面
- reactjs - 续集 FindAll()
- python - 根据数据框 1 上的值以及数据框 2 中的索引和列合并 2 数据框
- python-3.x - 如何使用 Python 从 API 响应中提取特定的 XML 行
- javascript - 应用程序脚本数组中可能存在内存泄漏?