![](/img/trans.png)
[英]Keras ImageDataGenerator flow directory with 3D CNN data format error?
[英]How to encode data for a 3D CNN network on keras?
我目前正在處理的數據(對應於蛋白質結構文件,pdb)是:
這個想法是創建一個 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.