使用sklearn是為了讀取自製資料集中使用一些預處理操作,雖然pytorch的包中含有一些預處理操作,但並不全因此使用到了sklearn。此處記錄一下在使用sklearn使用中趟的雷。
maxabsscaler是將資料歸一化到[-1,1],然而在此處使用中需要注意的是max操作不能針對二維以上的矩陣,若是需要對三維矩陣進行的話,需要將三維矩陣安排為二維矩陣,自己使用的方法為:
echo_trans = echo.reshape(echo.shape[0]
,-1)
echo_trans = t.maxabsscaler(
).fit_transform(echo_trans)
# 對回波進行歸一化
echo_trans = t.scale(echo_trans)
# 進行中心置零
echo = echo_trans.reshape(echo.shape[0]
,echo.shape[1]
,echo.shape[2]
)
在此處由於我需要其輸出矩陣重新為三維,因此我需要重新reshape
此處使用趟的雷其實是聯絡著maxabsscaler()的,因為在執行的時候報錯typeerror: float() argument must be a string or a number, not 『maxabsscaler』而我原來使用的是maxabsscaler().fit(echo_trans),因此會報錯。報錯原因為:
.fit method returns the standard scalar object. you are using that to train the model. please use fit_transfor or transform after the fit. like below因此用法應該為:(fit方法返回標準標量物件。你用它來訓練模型。請使用fit_transfor或轉換後,適合。像下面的)
sc_x.fit(x)
x = sc_x.transform(x)
orx = sc_x.fit_transform(x)
在我的**中其更改方式應為:
t.maxabsscaler(
).fit_transform(echo_trans)
如題這節主要討論在使用sklearn的時候其輸出的矩陣維度問題。至於為什麼討論這個問題主要是因為使用torchivision.transform的時候官方包會自動將你的輸入矩陣的h * w * c轉變為c * h * w,然而當你使用sklearn的時候其輸出與輸入的矩陣維度一致均為h * w * c。然而torch的標準輸入時c * h * w這樣就可能會報錯。因此需要你在自定義資料集裡面將矩陣維度改換過來。在我的程式中我使用的**為:
'''
由於torch的處理是c*h*w,而讀取是h*w*c所以需要調轉維度。
如果使用torchvision的transform則不需要進行這一步
'''echo = echo.transpose(2,
0,1)
label = label.transpose(2,
0,1)
此處由於我的匯入為nparray所以直接使用numpy的轉置矩陣方案。而且由於torch的data.dataloader 會自動將輸入改為tensor所以也不需要額外將nparray轉化為tensor。在此處若是為tensor,建議使用tensor.permute()
data science
記錄 media使過程中趟過的坑
1 下面使用的是min width屬性 media min width 768px media min width 992px media min width 1200px 說明 需要注意的是,使用min width 其它的min屬性也是同理 時,需要將min width後面屬性值最小的寫在最上面,...
記錄在vue中使用jsx時踩過的坑
使用方法及細節就不一一說了。1.給input或者textarea繫結value時,出現失效的問題。解決方法 2.給input繫結disabled屬性時,出現時而有效時而有效的問題。解決方法同上,也是dompropsdisabled 假如你定義了disabled的話 3.在封裝高階元件時,v mode...
QT學習記錄 在表盤中畫線
1表盤一般有現成的,直接貼到qlabel就好了 2將qlabel控制項提公升為乙個繼承qlabel類的自定義類 重寫該類的paintevent函式,一圈也就360 不會多也不會少,分成360份,就知道每個數值該對應著旋轉多少了 記錄一些關鍵步驟 void mylabel paintevent qpa...