Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Neural network 如何使用theano使用LSTM执行多标签学习?_Neural Network_Theano_Deep Learning_Lstm - Fatal编程技术网

Neural network 如何使用theano使用LSTM执行多标签学习?

Neural network 如何使用theano使用LSTM执行多标签学习?,neural-network,theano,deep-learning,lstm,Neural Network,Theano,Deep Learning,Lstm,我有一些文本数据,每个文档都有多个标签。我想为这个数据集使用Theano训练一个LSTM网络。我遇到过,但它只促进了二进制分类任务。如果有人对采用哪种方法有任何建议,那就太好了。我只需要一个初步可行的方向,我可以继续工作 谢谢, Amit您可以更改模型的最后一层。它将有一个目标向量,其中每个元素为0或1,这取决于您是否有目标。1)更改模型的最后一层。即 pred = tensor.nnet.softmax(tensor.dot(proj, tparams['U']) + tparams['b']

我有一些文本数据,每个文档都有多个标签。我想为这个数据集使用Theano训练一个LSTM网络。我遇到过,但它只促进了二进制分类任务。如果有人对采用哪种方法有任何建议,那就太好了。我只需要一个初步可行的方向,我可以继续工作

谢谢,
Amit

您可以更改模型的最后一层。它将有一个目标向量,其中每个元素为0或1,这取决于您是否有目标。

1)更改模型的最后一层。即

pred = tensor.nnet.softmax(tensor.dot(proj, tparams['U']) + tparams['b'])
应替换为其他层,例如sigmoid:

pred = tensor.nnet.sigmoid(tensor.dot(proj, tparams['U']) + tparams['b'])
2) 成本也应该改变

应以其他成本代替,例如交叉熵:

one = np.float32(1.0)
pred = T.clip(pred, 0.0001, 0.9999)  # don't piss off the log
cost = -T.sum(y * T.log(pred) + (one - y) * T.log(one - pred), axis=1) # Sum over all labels
cost = T.mean(cost, axis=0) # Compute mean over samples
3) 在功能
build\u model(tparams,options)
中,您应更换:

y = tensor.vector('y', dtype='int64')

4) 更改
pred_error()
,使其支持多标签(例如,使用一些度量标准,如准确性或scikit learn的F1分数)

y = tensor.vector('y', dtype='int64')
y = tensor.matrix('y', dtype='int64') # Each row of y is one sample's label e.g. [1 0 0 1 0]. sklearn.preprocessing.MultiLabelBinarizer() may be handy.