正能量的英文短句
发布时间:2019-07-25 02:55:51
作者:xhs
正能量的英文短句:(第一次在简的书上留下印记。毕业后,第一篇文章,投稿给了简书,因为其简单的风格吸引了。今天我的主题是“CNN如何应用于句子分类任务”。我主要是从思想和源代码分析的角度。任务介绍\n内容分类任务,主要是将查询句分为食品类、娱乐类、音乐类、学习类、旅游类等类别。本文主要介绍了如何构建一个不需要手工进行特征工程设计的端2端深度学习模型,以满足90%以上准确度的句子分类要求。\n源制作链接:hyperlink https://github.com/yzx1992/sentence_classification(顺便说一下,帮助我启动基于TensorFlow1.1版本的源代码)。只显示了演示数据集的一部分,希望读者能够理解(建议:自己构建爬虫代码,最可靠的自给自足)。\n“train”集:1000 \n测试集:500 \n秒,在句子分类任务中,“category type”只是敏感的一句话中的一个或几个词。例如:“我们吃海地牢吧?”如果模型能够捕捉到“海地牢”这三个字的特征信息,那么毫无疑问,该句应该被划分为食物类,然后我们可以首先将该句划分为“字”级或“字级”(在python中可以使用jieba包来剪切字)。)。值得注意的是,如果训练集较小,“字”级的效果会更好;另外,增加列车前嵌入效果会提高几点。但是,对应于词级的词向量矩阵大,参数多,最终训练得到的模型参数大(即字典的大小大,需要训练的嵌入矩阵参数多,容易溢出)带视频存储器和旅行室。例如,中文高频词字典取10W,字Emb维数取200,单个Embbed矩阵的参数取10W*200=2000W,2000W*4字节(浮点取4字节)约为80M。在我运行的句子分类任务中,单词模型的参数大小在300米左右,单词模型的参数大小可以控制在10米左右,当时我训练的任务语料库达到100W+,所以单词模型和单词模型的性能差别不大,而单词模型和单词模型的参数大小在300米左右。最终准确率、召回率、F1等指标。\n以下主要对“词”模型进行分析。\n采用NCNN框架,利用不同大小的卷积核捕获句子(1、2、3、4等)的ngram特征。值得注意的是,相同大小的卷积核通常包含多个卷积核,通过卷积核的不同初始化参数获取句子ngram的语义信息。在实验中,我把它设置为100,num_filtes=100。此外,大多数分类任务可以通过采用粗粒度特性来完成(当然,根据分类系统的粒度,它可以分为一级标记、二级标记、三级标记等)。为了减少模型参数,可以采用最大池方法来保留NGRAM中最明显的特征。例如,“我们吃海地牢好吗?”3-革兰的信息包含“0我”、“0我们”、“我们走”、“我们去吃饭”、“我们去吃饭”、“我们去海边”、“我们去海边”、“我们去海边”、“我们去海边”、“我们去海底”、“我们去海底”、“我们去海底”、“我们去海底”…等等,对于3-gram的所有功能,我们当然希望模型只学习其中的一个。\n最后,对于单个查询,我们提取了100个1-gram、100个2-gram、100个3-gram、100个4-gram功能或400个功能。\n通常,在那时,您可以选择多层全连接,通常取1个4-gram功能或400个功能。~3层,每层都可以由tanh或relu函数触发,以达到非线性的效果(如果不添加非线性激活函数,多层全连接相当于单个,数学上,矩阵求解未知->w2(w1)x)=wx(其中,特征向量X表示,W代表参数向量\n最后映射到9维向量空间,即得到每个类别对应的得分。在SoftMax函数后,将每个类别的得分转换为标准化概率分布(即每个类别的概率值之和等于1)。\n进入代码1)首先查看数据的数据处理部分。py:\n使用设计每次从文件中读取迭代器的想法、小批量训练样本。迭代器设计的优点是它一次将小批量语句读取到内存中,而不是将所有的训练集都丢弃到内存中。对于样本数超过1000万的文件,使用迭代器可以大大减少内存开销并提高执行效率。\ndef batchiter(data_path,batch_size)函数:\ndata_path:训练集路径或有效集\nbatch_size:mini_batch用于更新模型渐变,因此为了防止个别异常样本波动过大。\ndef batchiter(data_path batch_size):\n0打印(data_path)\n1,打开(data_path,\'r\')作为f\n2 sample_num=0\n3 samples=[]\n4,用于f:\nline 5=line中的行。剥离()\n6个样本。附加(行):7 sample_num+=1\n8如果sample_num==batch_size:\n9 a=zip([s.split(\\t”)for s in samples])\n10 l=list(a[0])\n11 x=[s.trip()for s in a[1]]\n12 x=np。array(text2list(x))\n13 y=[]\n14 for i in l:\n15 y.a ppend([0]*9)\n16 y[len(y)-1][int(i)-1)=1\n17 batch_data=list(zip(x,y))\n18 batch_data=np。array(batch_data)\n19 yield batch_data\n20 sample_num=0\n21 sample s=[]\nline 9~12:\na=zip([s.split(\\t”)for s in samples])表示合并批量大小的样本。\n单个样本对构造为:label_id\\t word_id1 word_id2 word_id3……也就是说,该句子属于标记,该句子用一个单词表示相应的ID序列,两个单词之间用\\t分隔符分隔。\neg:\ncase1:4 32 33 1571 20 57 58 0 \ncase2:1 108 287 916 917 101 572 0 \ncase3:2 318 319 95 646 647 319 192 95 \nnamely,max\u len=8,批次尺寸=3,此时值对应如下:na=[(\'4'、\'1'、\'2')、(\'32,33,1571)'、'7992770A0093FB380'、'58yno4eax5q2kkzgdddddn1lbkpt',0,'20 57 58 0 0 0'、\'108 287 916 916 917 101 572 0 0 0'、\'318 319 95 646 647 319 319 319 95')]\nl=[\'4'、\'4'、\'1'、\'1'、\'2\''、(\'32,33,1571)'、'79927992770770770770770A009093F093F093FB380'、'58yno4)\nx=[\'32 33 1571 20 57 58 0 0'、''108 287 916 917 101 572 0 0'、''318 319 95 646 647 319 192 95']\nx=[[32 33 1571 20 57 58 0]\n[108 287 916 917 101 572 0]\n[318 319 95 646 647 319 192 95]]\n行13到16:此代码仅描述9个类别。如果任务有x个类别,请将9改为x。\n在这些代码中,批处理语句的标签标签被构造成一个热向量。随后可以方便地找到预测标签和实际标签的交叉熵,即损失函数损失。\nCase1例如,标签为4,即,对于向量的九个维度,第三个位置1,0,其他位置(位置索引从索引=0开始),即,t他为[0,0,0,1,0,0,0,0,0,0]对应了Ground-True case1向量标签。同样,case2的标签是1,对应于[1,0,0,0,0,0,0,0,0,0],case3的标签是2,对应于[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]。\n对于case1,当您通过fu的最后一层时通过连接输出,得到一个维数为9的向量,这是每个类别的得分。例如,对于case1,argmax(9维向量的概率分布或9维向量的得分)=2,表示case1预测的得分向量为[y0,y1,y2,y3,y4,y5,y6,y7,y8]。此时,预测值和真值之间存在错误。用交叉熵方法求解了相应的误差表示。最后,采用梯度下降算法(即反向传播算法)对参数进行更新,使预测值更接近地面真值。\ny=[[0、0、0、1、0、0、0、0、0],[1、0、0、0、0、0、0、0]到[0、1、0、0、0、0、0、0],[1、0、0、0、0、0、0]17~19行:zip x和y为了方便训练样本和标签之间的一一对应,最后将它们转换成numpy数组。准备培训时,将他们送入模型中。\n批次数据=[数组([32,33,1571,20,57,58,0,0]\n(数组([108,287,916,917,101,572,0,0]],[1,0,0,0,0,0,0]),(数组([318,319,95,646,647,319,192,95],[0,1,0,0,0,0,0,0])\n批次数据=[数组([32,33,1571,列表([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])\n[array([108,287,916,917,101,101,572,0,0,0,0])列表([1,0,0,0,0,0,0,0,0])\n[array([318,319,95,646,647,319,192,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,]]]返回,除了它返回ns是一个生成器,而不是一个特定的值。\train()在train multi-gpu.py脚本中,可以轻松调用data.py函数来获取批处理训练样本及其相应的标签值\ntrain iuiter=batch iter(train_path,batch_size)返回用于train ou batch train iu iter的可读取对象,位置为:\nx_batch,y_batch=zip(*train_batch)返回批处理数据\n2)直接输入模型代码并传输到函数文本\cnn.py.\ndef推理(input_x,input_sequence_length,nvocab_size embedding_size,filter_size num_filters,nx_size,cpus,l2_reg_lambda=0.0,dropout_keep_prob=0.5)put_x:表示单词id,shape=[批,max_len]批,表示mini_批的大小,max_len,并表示句子的最大长度。\ninput_y:表示ba的矢量。正能量的英文短句
版权声明:本文内容由互联网用户投稿整理编辑发布,不拥有所有权,不承担应有相关法律责任。如果文章、图片有涉嫌抄袭的内容,请发送到邮箱举报,且提供抄袭的相关证据,一但查实,会在24小时删除涉嫌侵权内容。