tf.nn 和tf.layers以及tf.contrib.layers的简单区别(转)
tensorflow不同層的使用(tf.nn 和tf.layers以及tf.contrib.layers)的簡(jiǎn)單區(qū)別(轉(zhuǎn))
2018年09月02日 18:50:33?holmes_MX版權(quán)聲明:原創(chuàng)博客未經(jīng)允許請(qǐng)勿轉(zhuǎn)載! https://blog.csdn.net/holmes_MX/article/details/82317742
小trick: 對(duì)于使用tf.layers建立的神經(jīng)網(wǎng)絡(luò),如果想要對(duì)loss函數(shù)進(jìn)行正則話,可以采用如下方式[1]:
但是該方法不適用于編程者自己定義不同層的正則化。
l2 = tf.add_n([tf.nn.l2_loss(var) for var in tf.trainable_variables()])注意:本文中tensorflow ver=1.8
0. 寫作目的
好記性不如爛筆頭。及時(shí)更新。
1. 不同層的介紹
tf.nn是最基礎(chǔ)的層,如tf.nn.conv2d, tf.nn.max_pool等,需要編程者自己定義權(quán)重。下面給出自己定義的Conv2d函數(shù):
(注意: 這里統(tǒng)一使用tf.variable_scope()來(lái)管理范圍)
tf.layers是基于tf.nn封裝的高級(jí)函數(shù)[2],如果自己定義Conv2d,只需要一個(gè)函數(shù)即可,如下
tf.contrib.layers.conv2d也是封裝完好的高級(jí)函數(shù)[3],具體為:
2. tensorflow中相同功能不同函數(shù)的使用對(duì)比
2.1 對(duì)于初學(xué)者
?1) 如果只是想快速了解一下大概,不建議使用tf.nn.conv2d類似的函數(shù),可以使用tf.layers和tf.contrib.layers高級(jí)函數(shù)
?2) 當(dāng)有了一定的基礎(chǔ)后,如果想在該領(lǐng)域進(jìn)行深入學(xué)習(xí),建議使用tf.nn.conv2d搭建神經(jīng)網(wǎng)絡(luò),此時(shí)會(huì)幫助你深入理解網(wǎng)絡(luò)中參數(shù)的具體功能與作用,而且對(duì)于loss函數(shù)需要進(jìn)行正則化的時(shí)候很便于修改。
且能很清晰地知道修改的地方。而如果采用tf.layers和tf.contrib.layers高級(jí)函數(shù),由于函數(shù)內(nèi)部有正則項(xiàng),此時(shí),不利于深入理解。而且如果編寫者想自定義loss,此時(shí)比較困難,如如果讀者想共享參數(shù)時(shí),此時(shí)計(jì)算loss函數(shù)中的正則項(xiàng)時(shí),應(yīng)該只計(jì)算一次,如果采用高級(jí)函數(shù)可能不清楚到底如何計(jì)算的。
?
[Reference]
[1] 小trick來(lái)源:?https://github.com/LaurentMazare/deep-models/blob/master/densenet/densenet.py
[2]?tensroflow官網(wǎng):https://www.tensorflow.org/versions/r1.8/api_docs/python/tf/layers/conv2d
[3] tensroflow官網(wǎng):https://www.tensorflow.org/versions/r1.8/api_docs/python/tf/contrib/layers/conv2d
轉(zhuǎn)載于:https://www.cnblogs.com/ciao/articles/10870570.html
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的tf.nn 和tf.layers以及tf.contrib.layers的简单区别(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Two sum(给定一个无重复数组和目标
- 下一篇: 一个很漂亮的jQuery动画隐藏登陆框,