新的算法理論不斷湧現的同時,各種深度學習框架也不斷出現在人們視野,比如Torch,Caffe等等。TensorFlow是Google開發的第二代機器學習係統,於2015年底開源,成為了新一代流行的機器學習的算法框架。這一章節美女直播全婐APP免费下载將學習tensorflow的輕量級工具Canton的使用。
Canton是TensorFlow的一個輕量級包裝,專注於直觀的程序化建模和重量分享。它提供了靈活的方式來定義,訓練,評估和保存計算模型。詳細文檔可以參考這個鏈接
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。
這裏可以看到隻需要簡單調用就可以實現網絡層的鏈接。
現在讓美女直播全婐APP免费下载假設你隻想訓練共享層的權重(保持第一個conv層的權重不變)那麽美女直播全婐APP免费下载需要使用tf.get_collection(some_keys_you_have_to_remember), or get_layer(‘some_name’).trainable = False。隻需要把需要訓練的放到optimizer.minimize()即可。
現在就可以使用tensorflow的方式來訓練了。
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
之後不需要重新初始化變量,因為session一直都沒有關閉
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.npy文件裏麵將存儲兩次間隔的權重。
如果損失太低,顯示出過度配合的跡象。 假設想要將權重恢複到上一個檢查點
將會回到先前保存權值的地方。
因此美女直播全婐APP免费下载可以定義對象
[
可以通過函數得到權重
[
也可以像之前一樣訓練網絡。
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
保存權值
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
保存權值
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的使用