簡體   English   中英

為什么內核在訓練開始后很快就死了?

[英]Why the kernel quickly dies right after the training begins?

我正在嘗試為我擁有的數據集構建一個生成模型。 我使用 tensorflow 使用了一堆 Conv2DTranspose 層。 這是我的代碼:

model = Sequential()

model.add(Conv2DTranspose(filters=2, kernel_size=3, input_shape = (2,2,1)))

for i in range(37):
    
    model.add(Conv2DTranspose(filters = 2*i, kernel_size = 3))
        

model.add(Conv2DTranspose(filters = 3, kernel_size=3))


model.compile(optimizer = 'Adam', loss='mean_squared_error')

model.fit(labels, ims, batch_size=32, epochs = 100) 

輸入的大小為 (2,2,1),輸出是一個 (80,80,3) 數組,它應該是一個圖像。 當我運行代碼時,當涉及到訓練模型時,這意味着包含以下內容的行:

model.fit()

一切停止,運行停止,沒有顯示任何錯誤或警告。 我嘗試使用 Jupyter notebook 和簡單的 .py 文件運行此代碼。 兩種情況的結果都是一樣的。 順便說一下,我試圖用來運行代碼的系統是一台普通的台式機,只使用 CPU 和 RAM(不包括 GPU,RAM 容量 = 32 GB)。 我怎樣才能解決這個問題?

這是因為這一行中的一個錯誤:

for i in range(37):  
    model.add(tf.keras.layers.Conv2DTranspose(filters = 2*i, kernel_size = 3))

當您將每層過濾器設置為2*i ,第一層過濾器將為0因為i0 因此,您的第二層輸出形狀將類似於(None,6,6,0) ,這是沒有意義的,並且由於 tf 庫無法處理此問題,因此內核會死亡。 因此,我認為您可以將此行更改為這樣的內容以避免錯誤:

for i in range(37):  
    model.add(tf.keras.layers.Conv2DTranspose(filters = 2*(i+1), kernel_size = 3))

暫無
暫無

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

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