Warning: mkdir(): No space left on device in /www/wwwroot/X21X22X26Z2Z5.COM/func.php on line 127

Warning: file_put_contents(./cachefile_yuan/shengzhihan.com/cache/50/52a53/e95bc.html): failed to open stream: No such file or directory in /www/wwwroot/X21X22X26Z2Z5.COM/func.php on line 115
tensorflow的輕量級工具Canton的使用--星空人工智能美女福利导航網

星空人工智能美女福利导航網

tensorflow的輕量級工具Canton的使用

新的算法理論不斷湧現的同時,各種深度學習框架也不斷出現在人們視野,比如Torch,Caffe等等。TensorFlow是Google開發的第二代機器學習係統,於2015年底開源,成為了新一代流行的機器學習的算法框架。這一章節美女直播全婐APP免费下载將學習tensorflow的輕量級工具Canton的使用。

Canton是TensorFlow的一個輕量級包裝,專注於直觀的程序化建模和重量分享。它提供了靈活的方式來定義,訓練,評估和保存計算模型。詳細文檔可以參考這個鏈接

安裝
安裝僅限於python3,安裝方式,打開Anaconda Prompt,切換到tensorflow模式(輸入activate tensorflow)。之後,輸入pip install canton進行安裝即可。
用法
導入

import tensorflow as tf import canton as ct import numpy as np

 
定義輸入

input_variable=tf.Variable(np.random.normal(loc=0,scale=1,size=[1,256,256,3]).astype(‘float32’))

 
定義三個卷積層
  • conv_0有自己的權重。
  • conv_1和conv_2共享權重。 conv = ct.Conv2D(3,16,3) shared_conv = ct.Conv2D(16,16,3) print(conv.weights) print(shared_conv.weights)
     
    ,


ct.Conv2D的第一個參數是filter的長寬,第二是輸入值,第三個是輸出值。而且這個函數自帶偏移值b。

 

i = conv(input_variable) i = shared_conv(i) out = shared_conv(i) print(out) loss = tf.reduce_mean(out**2.)

 

這裏可以看到隻需要簡單調用就可以實現網絡層的鏈接。
現在讓美女直播全婐APP免费下载假設你隻想訓練共享層的權重(保持第一個conv層的權重不變)那麽美女直播全婐APP免费下载需要使用tf.get_collection(some_keys_you_have_to_remember), or get_layer(‘some_name’).trainable = False。隻需要把需要訓練的放到optimizer.minimize()即可。

 

# define optimizer opt = tf.train.AdamOptimizer(1e-3) # define train op train_step = opt.minimize(loss,var_list=shared_conv.get_weights())

 

現在就可以使用tensorflow的方式來訓練了。

 

sess = ct.get_session() # just the TF Session sess.run(tf.global_variables_initializer()) # initialize all weights for i in range(10): res = sess.run([train_step,loss],feed_dict={}) # you should feed inputs if you have print('loss:',res[1])

 

loss: 3.76966
loss: 3.58365
loss: 3.40627
loss: 3.23731
loss: 3.07659
loss: 2.92387
loss: 2.7789
loss: 2.6414
loss: 2.51115
loss: 2.38784

 
可以看到loss的值在不斷下降,也就是權重得到了訓練。如果想要加入更多的層到模型中,可以進行如下操作。

out = shared_conv(out) out = shared_conv(out) # redefine loss loss = tf.reduce_mean(out**2.) # redefine train op (Note: do not redefine the optimizer, which will produce error due to variable scope clashing) train_step = opt.minimize(loss,var_list=shared_conv.get_weights())

 

之後不需要重新初始化變量,因為session一直都沒有關閉

 

for i in range(10): res = sess.run([train_step,loss],feed_dict={}) print('loss:',res[1])

 

loss: 4.82773
loss: 4.44005
loss: 4.05348
loss: 3.682
loss: 3.33433
loss: 3.01487
loss: 2.72505
loss: 2.4644
loss: 2.23137
loss: 2.02376
你可以看到loss的值,如果你想保存權重的話,可以進行如下操作。

 

shared_conv.save_weights('shared_conv.npy')

 

shared_conv.npy文件裏麵將存儲兩次間隔的權重。
如果損失太低,顯示出過度配合的跡象。 假設想要將權重恢複到上一個檢查點

 

shared_conv.load_weights('shared_conv.npy')

 

將會回到先前保存權值的地方。

 
Can的類的定義

class DoubleConv(ct.Can): def __init__(self): super().__init__() # init base class self.convs = [ct.Conv2D(3,16,3),ct.Conv2D(16,3,3)] # define conv2d cans self.incan(self.convs) # add as subcans def __call__(self,i): i = self.convs[0](i) i = self.convs[1](i) return i

 

因此美女直播全婐APP免费下载可以定義對象

 

dc = DoubleConv() print(dc.subcans)

 

[]
可以通過函數得到權重

 

print(dc.get_weights())

 

[]
也可以像之前一樣訓練網絡。

 

i = dc(input_variable) out = dc(i) # N=2 loss = tf.reduce_mean(out**2.) train_step = opt.minimize(loss, var_list=dc.get_weights()) sess.run(tf.global_variables_initializer()) # init and re-init all the weights (mainly for the optimizer) for i in range(10): res = sess.run([train_step,loss],feed_dict={}) print('loss:',res[1])

 

loss: 6.04884
loss: 5.44523
loss: 4.90349
loss: 4.41841
loss: 3.98473
loss: 3.5973
loss: 3.25126
loss: 2.94217
loss: 2.66599
loss: 2.41911
保存權值

 

dc.save_weights('test.npy') dc.load_weights('test.npy')

 
Can的真實使用
def DoubleConv2():
    can = ct.Can()
    convs = [ct.Conv2D(3,16,3),ct.Conv2D(16,3,3)]
    def call(i):
        i = convs[0](i)
        i = convs[1](i)
        return i
    can.incan(convs)
    can.set_function(call)
    return candc2 = DoubleConv2()
out = dc2(input_variable)loss = tf.reduce_mean(out**2.)
train_step = opt.minimize(loss, var_list=dc2.get_weights())
sess.run(tf.global_variables_initializer()) # init and re-init all the weights (mainly for the optimizer)
for i in range(10):
    res = sess.run([train_step,loss],feed_dict={})
    print('loss:',res[1])

loss: 2.80366
loss: 2.69145
loss: 2.58286
loss: 2.47786
loss: 2.37641
loss: 2.27852
loss: 2.18415
loss: 2.09326
loss: 2.00581
loss: 1.92172
保存權值

 

dc.save_weights('test.npy') dc.load_weights('test.npy')

 
更加美觀,便捷的表示(對於chain的cans)
定義
def DoubleConv3():
    c = ct.Can()
    c.add(ct.Conv2D(3,16,3))
    c.add(ct.Conv2D(16,3,3))
    c.chain()
    return c
訓練
dc3 = DoubleConv3()
out = dc3(input_variable)loss = tf.reduce_mean(out**2.)
train_step = opt.minimize(loss, var_list=dc3.get_weights())
sess.run(tf.global_variables_initializer()) # init and re-init all the variables (mainly for the optimizer)
for i in range(10):
    res = sess.run([train_step,loss],feed_dict={})
    print('loss:',res[1])

loss: 2.11142
loss: 2.01924
loss: 1.93045
loss: 1.84502
loss: 1.76294
loss: 1.68418
loss: 1.60869
loss: 1.53641
loss: 1.46729
loss: 1.40125
好了,can的介紹就到這裏,可以去創建自己的網絡流了。

 

星空人工智能美女福利导航網 倡導尊重與保護知識產權。如發現本站文章存在版權等問題,煩請30天內提供版權疑問、身份證明、版權證明、聯係方式等發郵件至1851688011@qq.com美女直播全婐APP免费下载將及時溝通與處理。!:首頁 > 新聞 » tensorflow的輕量級工具Canton的使用

()
分享到:

相關推薦

留言與評論(共有 0 條評論)
   
驗證碼:
網站地圖