Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要帮助定义一个简单的神经网络吗_Python_Tensorflow_Machine Learning_Keras_Neural Network - Fatal编程技术网

Python 需要帮助定义一个简单的神经网络吗

Python 需要帮助定义一个简单的神经网络吗,python,tensorflow,machine-learning,keras,neural-network,Python,Tensorflow,Machine Learning,Keras,Neural Network,我对这个很陌生,我有几个问题。我有一个用keras创建的python神经网络的代码片段。该模型用于情绪分析。使用标记数据的训练数据集(情绪=1或0)。 现在我有几个关于如何描述神经网络的问题 model = Sequential() model.add(Dense(512, input_shape=(max_words,), activation='relu')) model.add(Dropout(0.5)) model.add(Dense(256, activation='s

我对这个很陌生,我有几个问题。我有一个用keras创建的python神经网络的代码片段。该模型用于情绪分析。使用标记数据的训练数据集(情绪=1或0)。 现在我有几个关于如何描述神经网络的问题

  model = Sequential()
  model.add(Dense(512, input_shape=(max_words,), activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(256, activation='sigmoid'))
  model.add(Dropout(0.5))
  model.add(Dense(2, activation='softmax'))


  model.compile(loss='categorical_crossentropy',
                optimizer='adam',
                metrics=['accuracy'])

  model.fit(train_x, train_y,
            batch_size=32,
            epochs=5,
            verbose=1,
            validation_split=0.1,
            shuffle=True)
我不太清楚以下许多条款,所以不要对我太苛刻

  • 1:这是情绪分析的典型模式吗
  • 2:这是“一袋话”吗?(我的猜测是肯定的,因为数据是使用标记器预处理的)
  • 3:是“集合”吗
  • 4:深吗
  • 5:密度有多大
  • 6:密度(?)的原因是什么?数字:512、256、2
  • 7:它有多少层(包括/不包括输入和输出层?)
  • 8:是否有监督/无监督
  • 9:使用顺序中三种不同激活功能“relu”、“sigmoid”、“softmax”的原因是什么
谢谢你的帮助

  • 分类交叉熵
    ,这是该神经网络的损失函数,可用于情绪分析。交叉熵损失返回不同类别的概率。在您的例子中,需要两个可能的类的概率(
    0
    1
  • 我不确定您是否使用了标记器,因为从您提供的代码中看不出它,但是如果您使用了标记器,那么是的,这是一个糟糕的单词模型。单词袋模型实质上是为文本中的词根创建存储空间。 从,如果以下是您的文本:
  • 约翰喜欢看电影。玛丽也喜欢电影

    那么,这篇文章的主题是:

    {“John”:1,“likes”:2,“to”:1,“watch”:1,“movies”:2,“Mary”:1,“too”:1}

  • 您使用的网络架构不是,而是一个前馈模型,它将一层中的所有单元连接到下一层中的所有单元,提供两层值的点积
  • 没有一个公认的网络深度定义。但是,根据经验,如果一个网络有两个以上的中间层(不包括输入和输出层),那么它可以被视为一个深层网络
  • 在上面提供的代码中,
    Dense
    反映了这样一个事实,即第一层(512)中的所有单元都连接到下一层中的每一个其他单元,即第一层和第二层之间总共有512x256个连接
  • 是的,第一层中的512个单元与第二层中的256个单元之间的连接导致512x256维的参数矩阵,这使得它非常密集。但是这里使用的
    Dense
    更多的是从API的角度,而不是语义角度。类似地,第二层和第三层之间的参数矩阵为256x2维
  • 如果排除输入层(有512个单位)和输出层(有2个可能的输出,即0/1),则此处的网络有一个层,有256个单位
  • 由于情绪分析任务具有与每个输入数据点相关联的输出(正或负),因此该模型受到监督。您可以将此输出视为网络的主管,指示数据点的情绪是积极的还是消极的。无监督任务没有与数据点关联的输出信号
  • 这里使用的激活函数用于为网络计算提供非线性。更详细地说,
    sigmoid
    有一个很好的特性,它的输出可以解释为概率。因此,如果网络输出数据点的概率为0.89,则意味着模型评估该数据点为正,概率为0.89。 使用sigmoid可能是出于教学目的,因为ReLU激活单元比sigmoid/tanh更受青睐,因为它具有更好的收敛特性,我看不到使用sigmoid代替ReLU的令人信服的理由

  • 我还建议你浏览博客。这将帮助你巩固你的概念。非常感谢。这回答了我所有的问题。非常感谢您抽出时间!