![](/img/trans.png)
[英]How to reduce the number of training steps in Tensorflow's Object Detection API?
[英]Number of steps to reduce to zero
你好,我有這個步驟問題,我想看看我可以在哪里改進我的代碼,以獲得將任何 integer 減少到零所需的步驟數。 我相信你們都知道這個過程,但只是為了澄清......如果數字是偶數,我們除以2,加一個步驟,如果數字是奇數我們減去,再加一個步驟......有人可以讓我知道我錯過了什么嗎?
def steps_to_zero(int):
step = 0
while (abs(int) > 0):
if int % 2 == 0:
int / 2
else:
int - 1
step += 1
return step
當您編寫諸如x / 2
之類的行時, Python 將計算該除法的結果。 但是,您不會將除法的結果保存在任何地方!
您需要執行與step += 1
相同的操作,這相當於step = step + 1
:
def steps_to_zero(int):
step = 0
while (abs(int) > 0):
if int % 2 == 0:
int /= 2 # Same as int = int / 2
else:
int -= 1 # Same as int = int - 1
step += 1 # Same as step = step + 1
return step
如果你不這樣做,變量int
永遠不會改變值。 它保留了它在開始時的價值。 結果,while 循環將永遠運行,因為abs(int) > 0
永遠保持這種情況。
另請注意, int
是內置類型,具有特殊含義。 強烈建議不要使用它或任何其他此類類型作為變量的名稱。 考慮改寫integer
:
def steps_to_zero(integer):
step = 0
while (abs(integer) > 0):
if integer % 2 == 0:
integer /= 2 # Same as integer = integer / 2
else:
integer -= 1 # Same as integer = integer - 1
step += 1 # Same as step = step + 1
return step
您沒有更新您的計數器int
。 您需要將其存儲回自身,否則您將永遠循環。
def steps_to_zero(int):
step = 0
while (abs(int) > 0):
if int % 2 == 0:
int = int / 2
else:
int = int - 1
step += 1
return step
應該解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.