婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于tensorflow __init__、build 和call的使用小結

基于tensorflow __init__、build 和call的使用小結

熱門標簽:電銷機器人系統廠家鄭州 螳螂科技外呼系統怎么用 正安縣地圖標注app 400電話申請資格 舉辦過冬奧會的城市地圖標注 阿里電話機器人對話 地圖地圖標注有嘆號 qt百度地圖標注 遼寧智能外呼系統需要多少錢

1.介紹

在使用tf構建網絡框架的時候,經常會遇到__init__、build 和call這三個互相搭配著使用,那么它們的區別主要在哪里呢?

1)__init__主要用來做參數初始化用,比如我們要初始化卷積的一些參數,就可以放到這里面

2)call可以把類型的對象當做函數來使用,這個對象可以是在__init__里面也可以是在build里面

3)build一般是和call搭配使用,這個時候,它的功能和__init__很相似,當build中存放本層需要初始化的變量,當call被第一次調用的時候,會先執行build()方法初始化變量,但后面再調用到call的時候,是不會再去執行build()方法初始化變量

2.代碼

class RB(tf.keras.layers.Layer): 
 def __init__(self, num_filters, *args, **kwargs):
 self.num_filters = num_filters
 super(RB, self).__init__(*args, **kwargs)
 #按需求添加卷積
 def build(self, input_shape):
 #按需求添加卷積
 self._layers = [
 ]
 super(RB, self).build(input_shape)
 
 def call(self, tensor):
 for layer in self._layers:
  tensor = layer(tensor) 
class DecodeNet(tf.keras.layers.Layer):
 
 def __init__(self, num_filters, *args, **kwargs):
 self.num_filters = num_filters
 super(DecodeNet, self).__init__(*args, **kwargs)
 self.rb_block0 = RB(self.num_filters)
 self.rb_block1 = RB(self.num_filters)
 self.rb_block2 = RB(self.num_filters)
 
 def build(self, input_shape):
 self._layers = [
  RB(self.num_filters),
  RB(self.num_filters),
  RB(self.num_filters),
 ]
 super(DecodeNet, self).build(input_shape)
 
 def call(self, tensor):
 tensor = self.rb_block0(tensor)
 tensor = self.rb_block1(tensor)
 for layer in self._layers:
  tensor = layer(tensor)
 tensor = self.rb_block2(tensor)
 return tensor

補充:Python類中的__init__() 和 self 的解析

1、Python中self的含義

self,英文單詞意思很明顯,表示自己,本身。

此處有幾種潛在含義:

1.這里的自己,指的是,實例Instance本身。

2.同時, 由于說到“自己”這個詞,都是和相對而言的“其他”而說的;而此處的其他,指的是,類Class,和其他變量,比如局部變量,全局變量等。

此處的self,是個對象(Object),是當前類的實例。

因此,對應的self.valueName 和 self.function()中的valueName:表示self對象,即實例的變量。與其他的,Class的變量,全局的變量,局部的變量,是相對應的。

function:表示是調用的是self對象,即實例的函數。與其他的全局的函數,是相對應的。

2、Python中為何要有self

那就是:

在類的代碼(函數)中,需要訪問當前的實例中的變量和函數的,即,訪問Instance中的:

對應的變量(屬性,property):Instance.ProperyNam,去讀取之前的值和寫入新的值

調用對應函數(function):Instance.function(),即執行對應的動作

-> 而需要訪問實例的變量和調用實例的函數,當然需要對應的實例Instance對象本身

-> 而Python中就規定好了,函數的第一個參數,就必須是實例對象本身,并且建議,約定俗成,把其名字寫為self

-> 所以,我們需要self(需要用到self)

而如果沒有用到self,即代碼中,去掉self后,那種寫法所使用到的變量,實際上不是你所希望的,不是真正的實例中的變量和函數,而是的訪問到了其他部分的變量和函數了。甚至會由于沒有合適的初始化實例變量,而導致后續無法訪問的錯誤。

下面,就通過代碼,來演示,如果去掉self,或者沒有合理的使用self,會出現哪些錯誤。

3、首先來看一下__init__()和self對象

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: antcolonies 
class Person(object):
 def __init__(self, name, lang, website):
  self.name = name
  self.lang = lang
  self.website = website
 
  print('self: ', self)
  print('type of self: ', type(self))
'''
未實例化時,運行程序,構造方法沒有運行
''' 
p = Person('Tim', 'English', 'www.universal.com') 
'''實例化后運行的結果
self: __main__.Person object at 0x00000000021EAF98>
type of self: class '__main__.Person'>
'''

可以看出self為實例變量p,是一個Person類型的對象。

class Dog(object):  
 def __init__(self,name,dog_type):
  self.name = name
  self.type = dog_type 
 def sayhi(self):
  print("hello,I am a dog, my name is ",self.name) 
 
d = Dog('LiChuang',"京巴")   # 實例化
d.sayhi()

以下是d = Dog('LiChuang',"京巴")實例化的示意圖:

4、如果沒有在__init__中初始化對應的實例變量的話,導致后續引用實例變量會出錯

如下代碼,完整的演示了,如果沒有在類Class的最初的__init__函數中,正確的初始化實例變量,則會導致后續沒有變量可用,因而出現AttributeError的錯誤:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: antcolonies 
name = 'whole global name'
'''
注:此處全局的變量名,寫成name,只是為了演示而用
實際上,好的編程風格,應該寫成gName之類的名字,
以表示該變量是Global的變量
''' 
class Person(object):
 def __init__(self, newPersonName):
  # self.name = newPersonName
  '''
  如果此處不寫成self.name
  那么此處的name,只是__init__函數中的局部臨時變量name而已
  和全局中的name,沒有半毛錢關系
  '''
  name = newPersonName
  '''
  此處只是為了代碼演示,而使用了局部變量name,
  不過需要注意的是,此處很明顯,由于接下來的代碼也沒有利用到此處的局部變量name
  則就導致了,此處的name變量,實際上被浪費了,根本沒有利用到
  '''
 def sayYourName(self):
  '''
  此處由于找不到實例中的name變量,所以會報錯:
  AttributeError: Person instance has no attribute 'name'
  '''
  print('My name is %s' %self.name)
 
def selfAndInitDemo():
 personInstance = Person('Tim')
 personInstance.sayYourName() 
if __name__ == '__main__':
 selfAndInitDemo()
 
''' 未使用self.name時拋異常
Traceback (most recent call last):
 File "E:/python14_workspace/s14/day06/test_1.py", line 18, in module>
 selfAndInitDemo()
 File "E:/python14_workspace/s14/day06/test_1.py", line 15, in selfAndInitDemo
 personInstance.sayYourName()
 File "E:/python14_workspace/s14/day06/test_1.py", line 11, in sayYourName
 print('My name is %s' %self.name)
AttributeError: 'Person' object has no attribute 'name'
'''

從上述代碼可見,由于在類的初始化(實例化)的__init__函數中,沒有給self.name設置值,使得實例中,根本沒有name這個變量,導致后續再去訪問self.name,就會出現AttributeError的錯誤了。

對應的,如果寫成self.name,則意思就正確了,就是初始化的時候,給實例中新增加,并且正常設置了正確的值newPersionName了,所以后續再去通過self.name,就可以訪問到,當前實例中正確的變量name了。

相應的正確寫法的代碼如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: antcolonies 
name = 'whole global name'
'''
注:此處全局的變量名,寫成name,只是為了演示而用
實際上,好的編程風格,應該寫成gName之類的名字,
以表示該變量是Global的變量
''' 
class Person(object):
 def __init__(self, newPersonName):
  self.name = newPersonName
  '''
  此處正確的,通過訪問self.name的形式,實現了:
   1.給實例中,增加了name變量
   2.并且給name賦了初值,為newPersionName
  '''
 def sayYourName(self):
  '''
  此處由于開始正確的初始化了self對象,使得其中有了name變量,
  所以此處可以正確訪問了name值了
  '''
  print('My name is %s' %self.name)
 
def selfAndInitDemo():
 personInstance = Person('Tim')
 personInstance.sayYourName()
 
if __name__ == '__main__':
 selfAndInitDemo() 
'''My name is Tim'''

5、在函數中,使用對應的變量

雖然代碼是可以運行的,但是實際上卻是使用的,不是實例中的變量

有時候,雖然你寫的代碼,可以運行,但是使用到的變量,由于沒有加self,實際上是用到的不是實例的變量,而是其他的變量。

此類問題,主要和Python中的變量的作用域有關,但是此處例子中,也和是否使用self有關:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: antcolonies 
name = 'whole global name'
'''
注:此處全局的變量名,寫成name,只是為了演示而用
實際上,好的編程風格,應該寫成gName之類的名字,
以表示該變量是Global的變量
'''
class Person(object):
 name = 'class global name' 
 def __init__(self, newPersonName):
  # self.name = newPersonName
  '''
  此處,沒有使用self.name
  而使得此處的name,實際上仍是局部變量name
  雖然此處賦值了,但是后面沒有被利用到,屬于被浪費了的局部變量name
  '''
  name = newPersonName
 def sayYourName(self):
  '''
  此處,之所以沒有像之前一樣出現:
  AttributeError: Person instance has no attribute 'name'
  那是因為,雖然當前的實例self中,沒有在__init__中初始化對應的name變量,實例self中沒有對應的name變量
  但是由于實例所對應的類Person,有對應的name變量,所以也是可以正常執行代碼的
  對應的,此處的self.name,實際上是Person.name
  '''
  print('My name is %s' %self.name)
  print('Name within class Person is actually the global name: %s' %name)
  print("Only access Person's name via Person.name = %s" %(Person.name))
 
def selfAndInitDemo():
 personInstance = Person('Tim')
 personInstance.sayYourName()
 print('whole global name is %s' %name)
 
if __name__ == '__main__':
 selfAndInitDemo()
'''
My name is class global name
Name within class Person is actually the global name: whole global name
Only access Person's name via Person.name = class global name
whole global name is whole global name
'''

其中,可見,此處開始__init__中,沒有給self實例初始化對應的name,

而后面的函數sayYourName中,雖然可以調用到self.name而沒有出現AttributeError錯誤,

但是實際上此處的值,不是所期望的,傳入的name,即"Tim",而是類中的name的值,即"class global name"。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • python中的__init__ 、__new__、__call__小結
  • 解決Tensorflow安裝成功,但在導入時報錯的問題
  • tensorflow安裝成功import tensorflow 出現問題

標簽:淘寶好評回訪 合肥 興安盟 阜新 信陽 隨州 昭通 濟源

巨人網絡通訊聲明:本文標題《基于tensorflow __init__、build 和call的使用小結》,本文關鍵詞  基于,tensorflow,init,build,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于tensorflow __init__、build 和call的使用小結》相關的同類信息!
  • 本頁收集關于基于tensorflow __init__、build 和call的使用小結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩午夜激情免费电影| 琪琪一区二区三区| 日韩美一区二区三区| 91亚洲精品久久久蜜桃| 亚洲精品视频在线观看免费| 日韩亚洲欧美综合| 91精品国模一区二区三区| 色综合天天综合在线视频| 成人中文字幕电影| 男男gaygay亚洲| 午夜精品久久久| 亚洲一区二区三区四区不卡| 亚洲激情第一区| 亚洲激情五月婷婷| 精品99999| 精品久久久久香蕉网| 91精品国产综合久久久蜜臀粉嫩 | 日韩精品视频网| 亚洲成人福利片| 久久日韩精品一区二区五区| 欧美一区二区在线免费播放| 久久精品在这里| 亚洲精品videosex极品| 日本va欧美va欧美va精品| 国产福利一区二区三区视频在线 | 精品写真视频在线观看| 成人性色生活片| 91久久久免费一区二区| 精品欧美乱码久久久久久1区2区| 中文字幕第一区综合| 午夜精彩视频在线观看不卡| 国产伦理精品不卡| 欧美丝袜丝交足nylons| 国产日韩欧美高清| 午夜影院久久久| www.日韩精品| 久久众筹精品私拍模特| 亚洲综合小说图片| 国产成人自拍高清视频在线免费播放| 色猫猫国产区一区二在线视频| 精品欧美黑人一区二区三区| 亚洲综合成人在线视频| 国产一区二区0| 91精品国产福利在线观看| 亚洲欧美日韩久久| 国内精品写真在线观看| 在线播放91灌醉迷j高跟美女| 中文字幕国产精品一区二区| 麻豆freexxxx性91精品| 欧美日韩一区不卡| 亚洲视频一区二区在线观看| 韩国理伦片一区二区三区在线播放| 91小宝寻花一区二区三区| 精品国产伦一区二区三区观看体验 | 欧美天堂亚洲电影院在线播放| 欧美电影精品一区二区| 偷拍日韩校园综合在线| 在线影院国内精品| 亚洲日本va午夜在线电影| 成人毛片视频在线观看| 国产欧美一区二区精品仙草咪| 免费观看久久久4p| 91精品蜜臀在线一区尤物| 亚洲成人精品一区二区| 欧美在线观看一二区| 一区二区三区在线视频免费观看| 99久久综合国产精品| 中文字幕中文乱码欧美一区二区| 国产成人h网站| 国产亚洲污的网站| 国产精品一二三区| 久久久国产精品麻豆| 国产二区国产一区在线观看| 国产亚洲精品7777| 99国产精品久| 一区二区高清在线| 欧美三级一区二区| 午夜精品福利一区二区三区蜜桃| 欧美老肥妇做.爰bbww视频| 日本伊人色综合网| 一区二区三区在线播放| 色哟哟精品一区| 亚洲成人三级小说| 欧美一区中文字幕| 国产在线精品一区在线观看麻豆| 2020国产精品自拍| 99re6这里只有精品视频在线观看| 亚洲欧美一区二区三区孕妇| 欧洲激情一区二区| 美女性感视频久久| 国产免费观看久久| 在线视频综合导航| 韩国av一区二区三区在线观看| 欧美国产日韩一二三区| 色狠狠综合天天综合综合| 日韩不卡免费视频| 国产日韩高清在线| 色综合天天在线| 老司机午夜精品99久久| 国产精品久久久久国产精品日日| 91麻豆免费观看| 精品在线一区二区三区| 成人免费在线视频| 欧美一级黄色大片| 99久久久久久99| 另类综合日韩欧美亚洲| 亚洲女与黑人做爰| 欧美成人国产一区二区| 日本韩国欧美一区| 国产宾馆实践打屁股91| 亚洲chinese男男1069| 欧美国产精品久久| 在线成人av网站| 99久免费精品视频在线观看| 免费成人深夜小野草| |精品福利一区二区三区| 欧美成人a在线| 欧洲亚洲精品在线| 不卡视频一二三四| 韩国在线一区二区| 日本三级亚洲精品| 亚洲五月六月丁香激情| 国产精品成人一区二区艾草 | 成人丝袜18视频在线观看| 日本中文字幕一区二区视频 | 91精品国产麻豆国产自产在线 | 久久久久国产精品麻豆| 在线综合亚洲欧美在线视频| 99精品热视频| 成人毛片老司机大片| 国产一区在线精品| 另类调教123区 | 日韩一区二区三区免费观看| 色综合亚洲欧洲| 99r国产精品| 99久久亚洲一区二区三区青草| 狠狠色狠狠色合久久伊人| 狂野欧美性猛交blacked| 天堂一区二区在线| 日韩高清不卡一区| 亚洲成人精品影院| 日韩精彩视频在线观看| 视频一区二区三区中文字幕| 亚洲福中文字幕伊人影院| 亚洲资源中文字幕| 亚洲成av人在线观看| 午夜久久久久久| 秋霞午夜鲁丝一区二区老狼| 日本成人中文字幕| 激情丁香综合五月| 精彩视频一区二区三区| 国产乱码精品1区2区3区| 国产一区二区三区在线观看免费视频| 另类成人小视频在线| 国产美女主播视频一区| k8久久久一区二区三区| 91麻豆成人久久精品二区三区| 91在线视频官网| 欧美日韩一区二区三区在线看| 欧美精品tushy高清| 精品久久久久香蕉网| 国产清纯白嫩初高生在线观看91 | 蜜桃视频一区二区三区在线观看| 三级在线观看一区二区| 国产一区在线视频| av在线不卡观看免费观看| 在线观看一区二区视频| 欧美一卡二卡三卡四卡| 欧美韩国日本一区| 夜夜夜精品看看| 九一久久久久久| 91亚洲精品久久久蜜桃网站| 4438x成人网最大色成网站| 久久久精品天堂| 亚洲精品国产高清久久伦理二区| 午夜精品成人在线视频| 国产99久久久国产精品免费看| 91亚洲国产成人精品一区二三 | 日本强好片久久久久久aaa| 国产精品亚洲午夜一区二区三区 | 蜜桃精品视频在线观看| 成人av在线资源网站| 欧美一区二区三区视频在线| 国产欧美日韩三级| 日韩成人免费在线| 91片在线免费观看| 欧美www视频| 亚洲一区二区三区中文字幕 | 欧美日韩一区二区三区视频| 久久影院电视剧免费观看| 亚洲一卡二卡三卡四卡无卡久久| 国产精品一品二品| 91精品国产91久久久久久一区二区| 国产精品福利一区二区三区| 极品瑜伽女神91| 91麻豆精品国产自产在线| 亚洲精选视频免费看| 国产成人久久精品77777最新版本| 欧美日韩国产精品成人| 日韩理论在线观看|