[英]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
因为i
是0
。 因此,您的第二层输出形状将类似于(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.