簡體   English   中英

如何在 keras 上為 3D CNN 網絡編碼數據?

[英]How to encode data for a 3D CNN network on keras?

我目前正在處理的數據(對應於蛋白質結構文件,pdb)是:

  • 以一個給定點為中心的坐標。
  • 在 3D 框 20 * 20 * 20 的限制下,我將其分解為 0.5 * 0.5 * 0.5 的體素(意味着我的尺寸為 40 40 40),這意味着我作為“網格”有 64 000 個體素。
  • 每個盒子都是獨立的,並且以相同的方式配置(每次都有一個 XYZ 軸和中心相同)
  • 給定體素中的每個點都有 20 個給定值之一(對應於之前二進制化的 Label)

這個想法是創建一個 3D CNN 網絡,其中給定一個盒子及其里面的內容,網絡 output 將預測對應於 20 20 20 盒子類型的 20 個類。 為此,網絡的輸入形狀應該是 4D,這就是我對如何編碼 numpy 數組有一些疑問的地方:

(N, 64000*3, 20) ==> (N, ?,?,?, 20) (我放置每個坐標的情況)

我如何以一種通過坐標封裝每個點的方式進行編碼?

從 keras API 文檔中關於輸入形狀的 Conv3D 層(這是層的必需關鍵字)

5+D 張量,形狀:batch_shape + (channels, conv_dim1, conv_dim2, conv_dim3) 如果 data_format='channels_first' 或 5+D 張量,形狀:batch_shape + (conv_dim1, conv_dim2, conv_dim3, channels) 如果 data_format='channels_last'。

這意味着在每個樣本中,您需要指定立方體的 3 個輸入維度,在您的情況下,這將等於形狀(40,40,40) (哪些元素將按體素大小進行縮放)並且會有20個輸入通道。

這意味着輸入形狀將等於: (N, 64000*3, 20) ==> (N, 40, 40, 40, 20)

Conv3D 層的 output 形狀將由卷積濾波器確定。 過濾器將有 5 個維度:3 個卷積維度與 kernel 形狀對齊,輸入維度和 output 維度。 但 keras 將為您處理這些尺寸,因此無需指定。 Conv3D 層(過濾器)的第一個參數是 output 維度的數量。 您還需要指定 kernel 形狀或大小,通常是輸入尺寸的一小部分(例如(4,4,4) )。

對於您的任務,網絡 output 將是一個 softmax 層,通常包括一些中間層,如 maxpool 或 ReLU。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM