首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中保存模型权重:什么是模型权重?

在Keras中保存模型权重:什么是模型权重?
EN

Stack Overflow用户
提问于 2018-12-20 16:39:45
回答 1查看 2.5K关注 0票数 2

我用Keras创建了一个用于图像识别的深度学习模型,并用model.save_weights('weights.h5')保存了模型的权重。另外,我加载了它,并再次使用了权重。

我知道model.save_weights()保存了模型权重。我的问题是模型的权重是多少?是过滤器的权重吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-20 16:50:28

模型权重是模型的所有参数(包括可训练和不可训练),而这些参数又是模型各层中使用的所有参数。是的,对于卷积层,这将是滤波器权重和偏差。

实际上,您可以看到每个层的权重:尝试model.layers[layer_index].get_weights(),您将获得该层的权重。当您调用save_weights()时,它实际上是在文件中存储的每个层上调用的get_weights()的输出。

例如,对于卷积层,get_weights()方法将返回一个包含两个元素的列表,这两个元素对应于过滤器权重和偏差。下面是一个示例:

代码语言:javascript
复制
model = Sequential()
model.add(Conv2D(5, (3,3), input_shape=(100, 100, 3)))

filters, biases = model.layers[0].get_weights()

>>> filters.shape
(3, 3, 3, 5)  <--- 5 filters of shape (3, 3, 3)

>>> biases.shape
(5,)    <--- one bias parameter for each filter

>>> filters[:, :, :, 0]   # get the first filter's weights
array([[[-0.26788074, -0.20213448,  0.06233829],
    [ 0.08651951,  0.21303588,  0.08127764],
    [ 0.04672694, -0.24589485, -0.12873489]],

   [[ 0.10841686,  0.24839908, -0.07466605],
    [-0.26903206, -0.0341135 ,  0.15083215],
    [-0.07382561, -0.00576964, -0.25354072]],

   [[-0.02937067,  0.22315139, -0.12964793],
    [ 0.23371089,  0.19973844, -0.00728002],
    [-0.2748396 , -0.02097657,  0.22772402]]], dtype=float32)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53865057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档