Python捉蟲記(持續更新)

2021-09-12 03:34:31 字數 2894 閱讀 1379

這是玄學,不是問題。遇到了請絕對路徑改相對路徑,相對路徑改絕對路徑,並祈禱有效。

pyx檔案的import需要cython庫的支援,因此要先裝cython,並在import相應pyx庫前加入:

import pyximport

pyximport.install()

若再出現fatal error: numpy/arrayobject.h: no such file or directory錯誤,則在cmd執行建立相應庫的**時:

python setup.py build_ext --include-dirs=c:\programdata\anaconda3\envs\pytorch\lib\site-packages\numpy\core\include
後面的位址因人而異,填自己電腦裡的numpy位址即可。

python 3.x版本自帶,python 2.x安裝:pip install futures

同資料夾下的a.py要引用b.py:

#this code file is named "a.py"

from . import b

tensorflow執行時缺省會載入全部視訊記憶體,這樣一來可能其他程式就無法執行了,解決方式:

import tensorflow as tf

config = tf.configproto()

config.gpu_options.allow_growth = true

session = tf.session(config=config, ...)

來多少任務用多少視訊記憶體,不會直接霸佔全部,或者直接設定最大使用量(30%):

config = tf.configproto()

config.gpu_options.per_process_gpu_memory_fraction = 0.3

session = tf.session(config=config, ...)

import os

import tensorflow as tf

os.environ["cuda_visible_devices"] = "0"

from keras.backend.tensorflow_backend import set_session

config = tf.configproto()

config.gpu_options.per_process_gpu_memory_fraction = 0.3

set_session(tf.session(config=config))

通過os設定程式所使用的顯示卡(標號從「0」開始),後面設定使用視訊記憶體佔全部視訊記憶體的百分比(30%)。

執行結束,釋放視訊記憶體:

from keras import backend as k

k.clear_session()

參考博文:

在跑深度學習模型的時候遇到的錯誤,一般是模型引數的問題,如果經檢查發現引數沒問題,改下batch_size試試(改大或改小,不改維度)……

可能情況二:資料集中樣本總數與batch size不匹配,如樣本總數無法整除以batch size,更改batch size即可。

影象分割任務中,訓練時經模型**輸出的內容格式為[batchsize, n_class, height, weight],而影象分割任務中的標籤一般是單通道的,格式為[batchsize, channel=1, height, weight]。若損失函式為crossentropyloss(),則在計算損失函式時應將真實標籤格式調整為[batchsize, height, weight],否則便會報出上述錯誤。因此,需要對標籤的tensor降維:

true_labels = true_labels.squeeze()
用於jupyter notebook的.ipynb檔案中,作用是可令matplotlib的畫圖函式以jupyter notebook為畫布繪製影象,在jupyter中使用很方便,但移植到普通的.py中則是錯誤命令,注釋掉即可。

f = open('a.txt','w')

f.write('132\n321')

f.close()

f = open('a.txt','r')

str = f.read() # str = '132\n321'

f.close()

f = open('a.txt','rb')

str = f.read() # str = '132\r\n321'

f.close()

pycharm編譯器下,正常往txt中寫乙個\n,文字讀入(引數為'r')是乙個\n,但在二進位制讀入(引數為'rb')的情況下變成了\r\n。

而正常往txt中寫乙個\r,二進位制讀入的情況下是\r,但文字讀入卻變成了\n。

按照網上的說法,\r表示回車(carriage return,cr),作用是使游標回到行頭,\n表示換行(line feed,lf),作用是使游標移動到下一行,兩者一起使用才相當於按下「enter」鍵。

在pycharm中,編譯器會以二進位制格式讀入檔案後在\n前新增\r,在文字格式讀入檔案後自動將\r轉換成\n。(僅在windows系統下)

若要避免前者的發生,對字串進行賦值、replace操作是沒用的,應在寫檔案的時候:

f = open('a.txt','w',newline='\n')
這樣編譯器就不會自作主張在\n前新增\r了。

不同作業系統的檔案系統採用了不同的回車換行操作,在unix系統中,每行結尾只有「\n」,即lf模式,而windows系統中檔案每行結尾為「\r\n」,即crlf模式。

apache服務崩潰捉蟲記

公元2010年8月31日15點10分54秒,我的apache服務罷工了。哥很鬱悶 當時哥正埋頭測試網頁,沒有任何徵兆,網頁就不解析了,然後寫著大大的 forbidden字樣,我當時第一反應就是許可權,把許可權設定成777,可轉頭就糾結了,心想我又不是linux,哪來的許可權777 啊,二來我又沒有裝...

Python學習 持續更新

先立個flag 2017 10 13 time 2017 10 15 今天花時間搭好了環境,寫了幾個print語句。實際上一臉懵逼,還不太清楚python的整個結構。說實話我找不到類似c語言裡面的.c h檔案這樣的。對整個結構都不太清楚,也沒找到.py檔案,實在是不清楚。哦原來是建立檔案的時候錯了 ...

Python 問題彙總 持續更新

2017 06 17 1.使用pycharm,寫入如下 的時候 import os os.system tasklist 會發現中文亂碼的情況,這個時候進行以下修改 2.print i love 中國 列印字串的時候,出現亂碼 解決方案如下 1 檔案儲存格式為utf 8 指定的是檔案編碼 2 在檔案...