当前位置: 首页 > 知识库问答 >
问题:

如何理解Keras中一个简单中立网络Python代码的密集层参数

万承志
2023-03-14
import numpy as np
    from keras.models import Sequential
    from keras.layers.core import Dense, Activation

    # X has shape (num_rows, num_cols), where the training data are stored
    # as row vectors
    X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32)

    # y must have an output vector for each input vector
    y = np.array([[0], [0], [0], [1]], dtype=np.float32)

    # Create the Sequential model
    model = Sequential()

    # 1st Layer - Add an input layer of 32 nodes with the same input shape as
    # the training samples in X
    model.add(Dense(32, input_dim=X.shape[1]))

    # Add a softmax activation layer
    model.add(Activation('softmax'))

    # 2nd Layer - Add a fully connected output layer
    model.add(Dense(1))

    # Add a sigmoid activation layer
    model.add(Activation('sigmoid'))

我是Keras的新手,正在努力理解它。

<代码>模型。add(稠密(32,input\u dim=X.shape[1])对于每个训练实例,有32个输入变量,其维数由input\u dim给出。但在输入X向量中,

array([[0., 0.],
       [0., 1.],
       [1., 0.],
       [1., 1.]], dtype=float32)

共有4个培训实例。看起来每个示例只有两个输入变量。那么,这与致密层定义中的“32”是如何对应的呢?这个网络是什么样子的?

共有2个答案

傅茂实
2023-03-14

按照本杰明的回答。下面是一个例子:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
Input (Dense)                (None, 16)                32        
_________________________________________________________________
Hidden_1 (Dense)             (None, 16)                272       
_________________________________________________________________
Output (Dense)               (None, 1)                 17        
=================================================================
Total params: 321
Trainable params: 321
Non-trainable params: 0
_________________________________________________________________

计算每一层的参数数:

输入大小=(1,)一个输入

Input layer number of parameters  = 16 weights * 1(input) + 16 biases = 32
Hidden layer number of parameters = 16 weights * 16(hidden neurons) + 16 biases = 272
Output layer number of parameters = 16 weights * 1(output neuron) + 1 bias = 17
刘兴修
2023-03-14

如果你尝试

model.summary()

你会得到最后一个问题的答案。

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 32)                96        
_________________________________________________________________
activation_1 (Activation)    (None, 32)                0         
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 33        
_________________________________________________________________
activation_2 (Activation)    (None, 1)                 0         
=================================================================
Total params: 129
Trainable params: 129
Non-trainable params: 0
_________________________________________________________________

网络输入为2个节点(变量),与dense\u 1层(32个节点)相连。总共32*2个权重,32个偏差为您提供96个参数。希望这有帮助。

 类似资料:
  • 为了将密集层转换为卷积层,我很难找到权重的正确映射。 这是我正在制作的ConvNet的摘录: 在MaxPooling之后,输入是形状(512,7,7)。我想将密集层转换为卷积层,使其看起来像这样: 但是,我不知道我需要如何重塑权重才能将扁平化的权重正确映射到卷积层所需的(4096,512,7,7)结构?现在,密集层的权重是维度(25088,4096)。我需要以某种方式将这25088个元素映射到(5

  • 我正在建立一个简单的神经网络。数据是一个231长的向量,它是一个热编码的向量。每个231个长向量被分配一个8个长的热编码标签。 到目前为止,我的代码是: 问题是输出层是8个单位,但是我的标签不是单个单位,它们是一个热编码的8个长矢量。如何将此表示为输出? 错误消息是: 无法用非浮点dtype构建密集层 完全回溯:

  • 本文向大家介绍tensorflow建立一个简单的神经网络的方法,包括了tensorflow建立一个简单的神经网络的方法的使用技巧和注意事项,需要的朋友参考一下 本笔记目的是通过tensorflow实现一个两层的神经网络。目的是实现一个二次函数的拟合。 如何添加一层网络 代码如下: 注意该函数中是xW+b,而不是Wx+b。所以要注意乘法的顺序。x应该定义为[类别数量, 数据数量], W定义为[数据类

  • 我正在玩Keras代码。当我这样写代码时, 它工作起来没有任何问题。但如果通过将前一层作为参数传递给下一层来实现这一点,那么我就会得到错误。 下面是错误 我怎样才能解决这个问题?

  • 所有 Keras 网络层都有很多共同的函数: layer.get_weights(): 以含有Numpy矩阵的列表形式返回层的权重。 layer.set_weights(weights): 从含有Numpy矩阵的列表中设置层的权重(与get_weights的输出形状相同)。 layer.get_config(): 返回包含层配置的字典。此图层可以通过以下方式重置: layer = Dense(32

  • 我知道密集层意味着一个典型的完全连接层,这意味着每个输入都将到每个神经元进行乘法。但最近我脑海中出现了一些问题,当在youtube、博客、StackOverflow和文章上搜索时,没有人给我满意的答案。 1-为什么我们需要神经网络中的全连接(密集)层,它的用法?我们不能使用稀疏层吗(意味着一些输入只会到达一些神经元,所以所有神经元不会得到所有输入) 2-如果我们使用稀疏层会发生什么?我知道计算量会