【问题标题】:Saving model weights in Keras: what is model weights?在 Keras 中保存模型权重:什么是模型权重?
【发布时间】:2019-05-20 18:16:39
【问题描述】:

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

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

【问题讨论】:

    标签: tensorflow keras neural-network deep-learning conv-neural-network


    【解决方案1】:

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

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

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多