日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tf.nn.softmax_cross_entropy_with_logits 和 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的联系与区别

發(fā)布時(shí)間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tf.nn.softmax_cross_entropy_with_logits 和 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的联系与区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 0.函數(shù)介紹
  • 1.區(qū)別聯(lián)系
    • 1.1 tf.nn.softmax_cross_entropy_with_logits
    • 1.2 tf.nn.sparse_softmax_cross_entropy_with_logits
    • 1.3 tf.contrib.legacy_seq2seq.sequence_loss_by_example
  • 2.代碼呈現(xiàn)
  • 3.References


Author: Cao Shengming
Email: caoshengming@trio.ai ? checkmate.ming@gmail.com
Company: Trio 北京(三角獸)科技有限公司


0.函數(shù)介紹

這兩個(gè)函數(shù)是在 model 中非常常用的兩個(gè)損失函數(shù),不管是序列標(biāo)注還是語言模型中都會(huì)見到他們兩個(gè)的身影,總的來說tf.nn.softmax_cross_entropy_with_logits 是 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的特殊情況,而且在代碼處理中也有一定的技巧。
(注:查東西的時(shí)候先看 api 和源碼再去翻各種亂七八糟的博客,效率會(huì)更高。)

1.區(qū)別聯(lián)系

1.1 tf.nn.softmax_cross_entropy_with_logits

**函數(shù)實(shí)現(xiàn):**傳統(tǒng)實(shí)現(xiàn)不贅述
函數(shù)輸入:

logits: [batch_size, num_classes]
labels: [batch_size, num_classes]
logits和 labels 擁有相同的shape

代碼示例:

import tensorflow as tf import numpy as np y = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 0, 0], [0, 1, 0]]) # onestep vector logits = np.array([[12, 3, 2], [3, 10, 1], [1, 2, 5], [4, 6.5, 1.2], [3, 6, 1]]) y_ = tf.nn.softmax(logits) e1 = -np.sum(y * np.log(y_), -1) # reduce_sum 所有樣本 loss 求和sess = tf.Session() y = np.array(y).astype(np.float64) e2 = sess.run(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=logits)) # labels 和 logtis shape 相同print("公式計(jì)算的結(jié)果:\n", e1) print("tf api 計(jì)算的結(jié)果:\n", e2)

1.2 tf.nn.sparse_softmax_cross_entropy_with_logits

主要區(qū)別:與上邊函數(shù)不同,輸入 labels 不是 one-hot 格式所以會(huì)少一維
函數(shù)輸入:

logits: [batch_size, num_classes]
labels: [batch_size]
logits和 labels 擁有相同的shape

代碼示例:

import tensorflow as tf labels = [0,1,2] #只需給類的編號(hào),從 0 開始logits = [[2,0.5,1],[0.1,1,3],[3.1,4,2]]logits_scaled = tf.nn.softmax(logits) result = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits)with tf.Session() as sess:print(sess.run(result))

1.3 tf.contrib.legacy_seq2seq.sequence_loss_by_example

函數(shù)實(shí)現(xiàn):

def sequence_loss_by_example(logits, targets, weights,average_across_timesteps=True,softmax_loss_function=None, name=None): #logits: List of 2D Tensors of shape [batch_size x num_decoder_symbols]. #targets: List of 1D batch-sized int32 Tensors of the same length as logits. #weights: List of 1D batch-sized float-Tensors of the same length as logits. #return:log_pers 形狀是 [batch_size].for logit, target, weight in zip(logits, targets, weights):if softmax_loss_function is None:# TODO(irving,ebrevdo): This reshape is needed because# sequence_loss_by_example is called with scalars sometimes, which# violates our general scalar strictness policy.target = array_ops.reshape(target, [-1])crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(logit, target)else:crossent = softmax_loss_function(logit, target)log_perp_list.append(crossent * weight)log_perps = math_ops.add_n(log_perp_list)if average_across_timesteps:total_size = math_ops.add_n(weights) total_size += 1e-12 # Just to avoid division by 0 for all-0 weights.log_perps /= total_size

函數(shù)說明: 可以發(fā)現(xiàn)通過 zip 操作對(duì) list 的每個(gè)元素執(zhí)行一次 sparse 操作,其他的都與 sparse 是相同的,所以使用這個(gè)函數(shù)的關(guān)鍵在于如何進(jìn)行輸入的 list 的構(gòu)造。最容易想到的是安 sequence_length進(jìn)行 unstack,但是這樣會(huì)給輸入的構(gòu)造帶來很多額外的工作量。具體代碼使用時(shí)是由一定技巧的,請(qǐng)參見下一部分代碼呈現(xiàn)

2.代碼呈現(xiàn)

此處我們將展示在訓(xùn)練 char-level語言模型的時(shí)候,兩種損失函數(shù)的處理,就可以搞清這兩個(gè)函數(shù)到底是怎么使用的。

case1:使用 softmax…的情況

def build_loss(self):with tf.name_scope('loss'):y_one_hot = tf.one_hot(self.targets, self.num_classes)y_reshaped = tf.reshape(y_one_hot, self.logits.get_shape())loss =tf.nn.softmax_cross_entropy_with_logits(logits=self.logits, labels=y_reshaped)self.loss = tf.reduce_mean(loss)

case1:使用 sequece…的情況

with tf.name_scope('loss'):output = tf.reshape(outputs, [-1, args.state_size])self.logits = tf.matmul(output, w) + bself.probs = tf.nn.softmax(self.logits)self.last_state = last_statetargets = tf.reshape(self.target_data, [-1])loss = seq2seq.sequence_loss_by_example([self.logits],[targets],[tf.ones_like(targets, dtype=tf.float32)])self.cost = tf.reduce_sum(loss) / args.batch_sizetf.summary.scalar('loss', self.cost)

上述代碼總結(jié):
我們可以清晰地看到兩者接受的原始的輸入竟然都是一樣的,所以這兩者在處理時(shí)都用到了一定的技巧,前者的技巧是是將 [B*T] 作為 [B] ,后者的技巧是在外邊包一層 “[ ]” 留給函數(shù)內(nèi)部的 zip 來使用,當(dāng)然同樣是將 [B*T] 作為 [B] ,這些操作都要考慮清楚,才能搞清楚函數(shù)的差異到底在哪。
另外需要注意的一點(diǎn)是 sequence 函數(shù)中的 weight 參數(shù),可以替代手工的 loss mask 對(duì)不需要的 padding 位置不進(jìn)行 loss 的計(jì)算。

3.References

  • cross_entropy 代碼
  • sequence_loss 代碼
  • tensorflow中sequence_loss_by_example()函數(shù)的計(jì)算過程(結(jié)合TF的ptb構(gòu)建語言模型例子)
  • 新老損失函數(shù) api 介紹

總結(jié)

以上是生活随笔為你收集整理的tf.nn.softmax_cross_entropy_with_logits 和 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的联系与区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩精品视频在线观看网站 | 一区二区三区四区高清视频 | 第一宅男av导航入口 | 91视| 爱情岛亚洲首页论坛小巨 | 色网站在线播放 | 日本三区视频 | 夜夜操网站 | 有声小说 成人专区 | 久久97视频 | 日日不卡av| 国产h视频在线 | 欧美一区三区二区在线观看 | 一区二区三区免费在线观看 | 日韩中文字幕精品视频 | 69性视频| 国产欧美激情视频 | 欧美日p视频 | 91av视频网站 | 在线免费观看av不卡 | 又色又爽又黄gif动态图 | 久久综合五月天 | 美女av免费 | 蜜桃视频在线播放 | 在线观看免费看片 | 熟睡侵犯の奶水授乳在线 | 色哟哟网站在线观看 | 国产成人精品无码免费看夜聊软件 | 男女插插视频 | 欧美日韩一区二区三区免费 | 女女综合网 | 日韩在线精品强乱中文字幕 | www.男人天堂.com | 久久久新 | 成人在线观看亚洲 | 尤物一区二区 | 原创真实夫妻啪啪av | 99精品小视频 | 日韩精品人妻一区二区中文字幕 | 波多野结衣二区 | 欧美一区二区激情视频 | 操夜夜 | 伊人天堂在线 | 免费在线观看黄视频 | 久久国产精品免费观看 | 精品小视频在线观看 | 精品黑人一区二区三区国语馆 | 麻豆免费在线观看视频 | 国产女人高潮时对白 | 一区二区激情视频 | 日韩欧美三级 | 欧美精品一区二区三区蜜臀 | 大学生高潮无套内谢视频 | 97干干| 天天插天天射 | 青青青免费在线 | 1000部做爰免费视频 | 成人欧美一区二区三区黑人动态图 | 非洲黑人毛片 | 伊人网五月天 | 国产高清久久久 | 办公室大战高跟丝袜秘书经理ol | 国产亚洲欧美日韩高清 | www.av网| 日日干天天操 | 原神淫辱系列同人h | 在线观看日韩av | 女性喷水视频 | 中国av一区二区 | av 日韩 人妻 黑人 综合 无码 | 成人一区二区三区视频 | 香港三级在线视频 | 四虎精品成人免费网站 | 啪啪免费视频网站 | 日本不卡一区视频 | 国产日产欧美一区二区三区 | 37p粉嫩大胆色噜噜噜 | 欧美三级韩国三级日本三斤 | 国产综合精品一区二区三区 | 一卡二卡三卡 | 在线免费看污片 | 久久久久久av无码免费看大片 | 亚洲福利天堂 | 久久精品国产一区二区三区 | 日韩一区不卡 | 午夜视频在线观看网站 | 精品欧美乱码久久久久久1区2区 | 亚洲综合插 | 日韩精品久久久久 | 人妻va精品va欧美va | xxxx视频在线观看 | 欧美mv日韩mv国产网站 | 日本熟伦人妇xxxx | 午夜一区二区三区在线观看 | 国产av电影一区 | 日韩视频在线观看免费 | 97精品一区二区视频在线观看 | 欧美日韩一二三 | 亚洲一区动漫 |