Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 如何使用CNN Tensorflow对电影评论中的情感和类型进行分类_Python 3.x_Tensorflow_Neural Network_Deep Learning_Data Science - Fatal编程技术网

Python 3.x 如何使用CNN Tensorflow对电影评论中的情感和类型进行分类

Python 3.x 如何使用CNN Tensorflow对电影评论中的情感和类型进行分类,python-3.x,tensorflow,neural-network,deep-learning,data-science,Python 3.x,Tensorflow,Neural Network,Deep Learning,Data Science,我试图对电影评论中的情感进行分类,并根据评论本身预测电影的类型。现在情绪是一个二元分类问题,其中as类型可以是多标签分类问题 另一个澄清问题的例子是对句子的情绪进行分类,并预测句子的语气是快乐、讽刺、悲伤、可怜、愤怒还是恐惧 更重要的是,我想使用Tensorflow CNN进行分类。我的问题是构建y_标签和训练数据,以便输出帮助我检索情感和类型。 例如数据Y标签:[[0,1],[0,1,0,1,0]]表示情绪消极,情绪讽刺和愤怒 你建议我如何处理这个问题 您可以将此视为一个多标签问题,并将情绪和

我试图对电影评论中的情感进行分类,并根据评论本身预测电影的类型。现在情绪是一个二元分类问题,其中as类型可以是多标签分类问题

另一个澄清问题的例子是对句子的情绪进行分类,并预测句子的语气是快乐、讽刺、悲伤、可怜、愤怒还是恐惧

更重要的是,我想使用Tensorflow CNN进行分类。我的问题是构建y_标签和训练数据,以便输出帮助我检索情感和类型。 例如数据Y标签:[[0,1],[0,1,0,1,0]]表示情绪消极,情绪讽刺和愤怒


你建议我如何处理这个问题

您可以将此视为一个
多标签问题,并将
情绪
音调
标签附加在一起


现在,由于网络必须预测多个输出(在本例中为2),您需要使用激活功能,如
sigmoid
,而不是
softmax
。你的预测可以使用tf.round(logits)

基本上在CNN的最后一层进行,当你将CNN输出调整为1xN的形式时,添加两个前馈神经网络。因此,如果你有一个简单的分类问题,你将CNN的输出输入一个前馈神经网络,在这个例子中,你将有两个这样的网络。因此,为了实现这一点,基本上您将有以下几点:

  • CNN输出---馈送--->分类器#1
  • CNN输出---馈送--->分类器#2
因此,您必须分离分类,但仍然必须反向传播它们,因此它看起来像这样:

loss1 = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction1, labels_1))
loss2 = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction2, labels_2))

loss = loss1 + loss2 

因此,您将使用优化器“最小化”损失。

您可以将其视为一个
多标签问题,并将
情绪
音调
标签附加在一起。这是最佳方法吗?如果第一类(此处为情感)和第二类(如文学领域,如科学、法律、社会学,如多类分类问题)没有语义关系,网络是否仍然有效?为什么输出之间应该有任何关系?。输入输出之间应该有语义关系,而不是输出之间的关系。@vijaym So,只是澄清一下;我应该将y_标签更改为[0,1,0,1,0,1,0],并使用sigmoid函数训练CNN模块以获得登录信息,对吗?检查回答确保谢谢,我将按照您的建议编辑代码。我会接受答案的。再次非常感谢。太好了。。首先尝试二进制分类,检查网络是否正常工作。因为在你的任务中使用CNN有点棘手(我会从LSTM开始执行这个任务,也许CNN会在上面)。所以,在您尝试组合之前,首先要让它工作。@vijaym但是在多标签分类中,如果我使用tf.nn。sigmoid,cross,entropy,和logits,那么我应该在这里减少什么,减少是什么意思,还是减少总和??检查dhusyant在@AyodhyankitPaul处的上一期《损失函数》
reduce\u mean
reduce\u sum
应起作用。但是,如果您希望
学习速率
在不同的
batch size
中表现相同,则首选
reduce\u means
的选项。您可以在登录时如何添加两个前馈网络吗?它与vijay建议的使用多类有什么不同?我已经编辑了我的答案,希望能有所帮助。请随时提出任何进一步的问题。