Word2Vec、GloVe等从未标注数据无监督的学习到词的Embedding,用到不同特定任务中。
用于训练的Embedding来初始化模型的Embedding,而后用特定任务的监督数据来fine-tuning.
如果监督数据较少,fix Embedding,只让模型学习其它的参数(Transfer Learning)
如输入是一个句子,输出是正向或负向情感。表征句子,常使用CNN、RNN编码,输出一个向量(把句子映射到语义空间,相似的句子映射到相近的地方)。
无监督的通用(universal)的句子encode称为热点。无监督:使用未标注的原始数据学习encode参数,通用:学习到的参数不需要太多的fine-tuning就可以直接用到不同任务中。
https://blog.csdn.net/nini_coded/article/details/79250703
每批数据量的大小。SGD:将训练集分成多个mini_batch(即常说的batch),一次迭代(1 个iteration)训练一个minibatch(即batchsize个样本),根据该batch数据的loss更新权值。
batchsize越小 =》 一个batch中的随机性越大,越不易收敛。
batchsize越大 =》 越能够表征全体数据的特征,梯度下降方向准确,收敛快。缺乏随机性,容易使梯度始终向单一方向下降,陷入局部最优;而且当batchsize增大到一定程度,一次batch产生的权值更新(即梯度下降方向)基本不变。
因此理论上存在一个最合适的batchsize值,使得训练能够收敛最快或者收敛效果最好(全局最优点)。
1个iteration即迭代一次,也就是用batchsize个样本训练一次。
1个epoch指用训练集中的全部样本训练一次。
先采用小的学习率训练,之后再采用较大的学习率正式训练
http://www.sohu.com/a/219390129_100044418
值越低,沿着梯度下降越慢。花费很长的时间来收敛。
学习率会影响我们的模型能够以多快的速度收敛到局部最小值(也就是达到最好的精度)。 因此,从正确的方向做出正确的选择意味着我们能用更少的时间来训练模型。
训练多个模型做组合 =》 费时
返回在UNICODE里分类的类型
Code Description
[Cc] Other, Control
[Cf] Other, Format
[Cn] Other, Not Assigned (no characters in the file have this property)
[Co] Other, Private Use
[Cs] Other, Surrogate
[LC] Letter, Cased
[Ll] Letter, Lowercase
[Lm] Letter, Modifier
[Lo] Letter, Other
[Lt] Letter, Titlecase
[Lu] Letter, Uppercase
[Mc] Mark, Spacing Combining
[Me] Mark, Enclosing
[Mn] Mark, Nonspacing
[Nd] Number, Decimal Digit
[Nl] Number, Letter
[No] Number, Other
[Pc] Punctuation, Connector
[Pd] Punctuation, Dash
[Pe] Punctuation, Close
[Pf] Punctuation, Final quote (may behave like Ps or Pe depending on usage)
[Pi] Punctuation, Initial quote (may behave like Ps or Pe depending on usage)
[Po] Punctuation, Other
[Ps] Punctuation, Open
[Sc] Symbol, Currency
[Sk] Symbol, Modifier
[Sm] Symbol, Math
[So] Symbol, Other
[Zl] Separator, Line
[Zp] Separator, Paragraph
[Zs] Separator, Space
返回Unicode字符串unistr的常规表单形式。表单的有效值为’NFC’,‘NFKC’,‘NFD’和’NFKD’。
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
split() 通过指定分隔符(默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等)对字符串进行切片。
将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
检查字符串是否是以指定子字符串开头
以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。
以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值
except StandardError, e:
logging.exception(e)
python2里面,dict.items返回的是数组,six.iteritems(dict)则返回生成器。
python3 里面, dict.items改变了默认实现,也返回生成器。
浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象不复制。
深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。
tf.multiply(x, y, name=None)
两个矩阵中对应元素各自相乘
tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
将矩阵a乘以矩阵b,生成a * b。
repeat()在batch操作输出完毕后再执行,若在之前,相当于先把整个数据集复制两次。
将数据集重复多少次,即epoch。
维持一个buffer size 大小的 shuffle buffer,所需的每个样本从shuffle buffer中获取,取得一个样本后,就从源数据集中加入一个样本到shuffle buffer中。
读取batch_size大小的数据
cls:调用当前类名,返回初始化后的类
eg. def from_dict(cls, json_object):
参考:https://blog.csdn.net/dyh4201/article/details/78336529
# 绝对引入:from __future__ import absolute_import,用import string来引入系统的标准string.py
# 用from pkg import string来引入当前目录下的string.py了
from __future__ import absolute_import
# 精确除法
# 没有导入该特征时,"/"操作符:执行的是截断除法(Truncating Division)
# 导入精确除法之后,"/"执行:精确除法,"//"操作符:执行截断除法
from __future__ import division
# print用法
# 在python2.X,使用print就得像python3.X那样加括号使用。
from __future__ import print_function
if __name__ == "__main__":
# 指定必须的参数
flags.mark_flag_as_required("xxx")
……
tf.app.run() # 解析命令行参数,调用main 函数 main(sys.argv)
processors = {"dataset": datasetProcessor}
wordpiece按字典分词:贪心
分词后的A+B句子长度超过最大长度截断:如果A句长则去掉A最后的token,如果B句长则去掉B最后的token,直到小于等于最大长度