Neural network 如何使用caffe对文本进行分类?

Neural network 如何使用caffe对文本进行分类?,neural-network,deep-learning,caffe,pycaffe,Neural Network,Deep Learning,Caffe,Pycaffe,我正在用烂番茄数据集训练我的网络。它分为两组,正面的和负面的例子。我如何在caffe中配置我的cnn来预测给定的文本是正面的还是负面的? 我已经格式化了数据,每个句子有56个单词。但是使用下面的配置甚至不能给我一个令人满意的结果 n = caffe.NetSpec() n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=db_path, transf

我正在用烂番茄数据集训练我的网络。它分为两组,正面的和负面的例子。我如何在caffe中配置我的cnn来预测给定的文本是正面的还是负面的? 我已经格式化了数据,每个句子有56个单词。但是使用下面的配置甚至不能给我一个令人满意的结果

n = caffe.NetSpec()
n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB,
            source=db_path,
            transform_param=dict(scale= 1 / mean), 
            ntop=2)

n.conv1 = L.Convolution(n.data, kernel_size=3, pad=1, 
                        param=dict(lr_mult=1), num_output=10, 
                        weight_filler=dict(type='xavier'))



n.pool1 = L.Pooling(n.conv1, kernel_size=n_classes, 
                    stride=2, pool=P.Pooling.MAX)

n.ip1 = L.InnerProduct(n.pool1, num_output=100, 
                       weight_filler=dict(type='xavier'))

n.relu1 = L.ReLU(n.ip1, in_place=True)

n.ip2 = L.InnerProduct(n.relu1, num_output=n_classes, 
                       weight_filler=dict(type='xavier'))

n.loss = L.SoftmaxWithLoss(n.ip2, n.label)
我的数据集分为两个文本文件。一个包含正面示例,另一个包含负面示例。为了组织我的数据,我得到了最大句子(59个单词)的长度,因此如果一个句子小于59个单词,我会在其中添加一些文本。我改编自。例如,假设最大的句子有3个单词:

data = 'abc def ghijkl. mnopqrst uvwxyz. abcd.'

##
#In this data I have 3 sentences:
##

sentence_one = 'abc def ghijkl
sentence_two = 'mnopqrst uvwxyz'
sentence_three = 'abcd'
句子_one
是最大的(3个单词),因此为了格式化其他两个句子,我做了以下操作:

sentence_two = 'mnopqrst uvwxyz <PAD>'
sentence_three = 'abcd <PAD> <PAD>'

使用我的数据数据库和上述caffe的配置,我得到的精度很差(低于3%)。我做错了什么

你是如何编码你的文本的?你得到了什么结果?你有没有做些什么来追踪处理过程?通常,我们寻找最小的代码、预期结果和实际结果,即规范的MCVE。您是使用图像文本作为输入,还是原始文本?我编辑了我的问题,您能帮我吗?Caaarlos,您尝试过Prune告诉您的事情吗?
datum = caffe.proto.caffe_pb2.Datum()
datum.channels = 1
datum.height = 59 #biggest sentence
datum.width = 1
datum.label = label # 0 or 1
datum.data = sentence.tobytes()