focal loss dice loss源码_0815——W2V的TF源码阅读

昨天开始看text matching的一个很好的资源,有文献有讲解有代码
今天看了DRCN的网络结构部分,代码部分还在进行中...

贴上原作者的地址:

文本匹配模型之DRCN - Welcome to AI World​terrifyzhao.github.io
a5142d25d20701965987661cd2cbd221.png
terrifyzhao/text_matching​github.com
db07b5672fdb32979c353b804ae631d1.png

W2V的源码阅读记录---20190815

word2vec_dynamic.py

0.基础函数

list.extend(list2)
#把list2的每个值都加到list的末尾
collections.deque()
#生成双端队列,方便从两端append
np.random.choice的用法
# 参数意思分别 是从a 中以概率P,随机选择3个, p没有指定的时候相当于是一致的分布
 

#TF的函数接口

tf.name_scope(‘inputs’) 总结:
1. `tf.variable_scope`和`tf.get_variable`必须要搭配使用 (全局scope除外),为share提供支持。
2. `tf.Variable`可以单独使用,也可以搭配`tf.name_scope`使用,给变量分类命名,模块化。
  1. `tf.Variable`和`tf.variable_scope`搭配使用不伦不类,不是设计者的初衷
'''
tf.random_uniform((6, 6), minval=low,maxval=high,dtype=tf.float32)))
返回6*6的矩阵,产生于low和high之间,产生的值是均匀分布的。
tf.nn.embedding_lookup(embeddings, train_inputs)
#作用是查找embeddings矩阵中,index为[train_inputs]的向量
tf.summary.scalar(‘mean’,mean)
#显示标量信息,用于收集一维标量
 
loss = tf.reduce_mean( tf.nn.nce_loss())
mean_0 
关于NCEloss的实现:
_compute_sampled_logits: 通过这个函数计算出正样本和采样出的负样本对应的output和label;
sigmoid_cross_entropy_with_logits: 通过 sigmoid cross entropy来计算output和label的loss,从而进行反向传播。这个函数把最后的问题转化为了num_sampled+num_real个两类分类问题,然后每个分类问题用了交叉熵的损伤函数,也就是logistic regression常用的损失函数。TF里还提供了一个softmax_cross_entropy_with_logits的函数,和这个有所区别。
优化器
#SGD
 
tf.multiply(x, y, name=None) 和 tf.matmul()
tf
计算图Graph最后步骤
# Merge all summaries.
         
计算图的训练
tf
模型保存
saver

1. word2vec_basic(log_dir) —–> load_data()

1. 编码

df1 = pd.read_csv('input/train.csv', encoding='utf-8-sig')
df1 

2. re.sub()正则

segments = list(
map(
lambda x: list(jieba.cut(re.sub("[!,。?、~@#¥%&*().,::|/`()_;+;…-s]", "", x))), df_sentences))
'''
re.sub(pattern, repl, string, count=0, flags=0)
pattern,表示正则中的模式字符串。
反斜杠加数字(N),则对应着匹配的组(matched group)
比如6,表示匹配前面pattern中的第6个group

repl,就是replacement,被替换,的字符串的意思。repl可以是字符串,也可以是函数。
'''
str.replace(old, new[, max])
str.strip()对于这个函数要记住3点:
  1. 默认删除行首或者行尾的空白符(包括'n', 'r', 't', ' ')
  2. 从行首行尾开始逐次判断删除
  3. lstrip() rstrip()

s匹配任意空白字符,等价于 [tnrf].

S匹配任意非空字符

[Pp]ython匹配 "Python" 或 "python"

rub[ye]匹配 "ruby" 或 "rube"

[aeiou]匹配中括号内的任意一个字母

[0-9]匹配任何数字。类似于 [0123456789]

[a-z]匹配任何小写字母[A-Z]匹配任何大写字母

[a-zA-Z0-9]匹配任何字母及数字

[^aeiou]除了aeiou字母以外的所有字符

[^0-9]匹配除了数字外的字符


3.map()

map(function, iterable, ...)
#这里,是把['','','']通过lambda依次取出str进行re.sub()和jieba.lcut()
'''
所以,整个语句最后输出segments是[
[],[]
],每个子list中存放的是str(分词后的)
'''

2. word2vec_basic —> bulid_dataset(words, min_count)

把行输入处理成dataset

1.collections.Counter(words).most_common()

collection

3.W2V的step2

vocabulary 

4.W2V的step3

为skip-gram生成训练batch
num_skips:表示选择挤兑数据,如skip_window是2,与target有关的就是4个,当num_skips==3,随机选择三个词与target组队训练
generate_batch(batch_size, num_skips, skip_window)—-》 return batch,labels

5.W2V的step4

建立计算图,用于训练skip-gram模型

6.W2V的step5

开始训练
with 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值