Keras - 密集和 Conv2D 值
Keras - Dense and Conv2D values
我想用来训练网络的图像大约有 4000px*3000px
大小和大约 40k
大小,按 250
类 排序。
我制作了如下所示的 CNN:
model = keras.Sequential([
layers.Input((imgHeight, imgWidth, 1)),
layers.Conv2D(16, 3, padding = 'same'), # filters, kernel_size
layers.Conv2D(32, 3, padding = 'same'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(250),
])
如何找出我需要的值 layers.Conv2D(*16*, ...)
?
我如何找出我需要的值 layers.Dense(*250*)
?
因为我无法开始训练过程,所以我 运行 内存不足。
Flatten()
层的输出形状为 9600 万,因此模型的最终密集层有 240 亿个参数,这就是你 运行ning 内存不足的原因。您可以采取一些步骤来解决此问题:
尝试将您的图像调整为较小的形状,如果 4000x3000x1
不是必需的,160x160x1 将是一个不错的选择。
尝试使用更多 Conv2D
层,然后使用 MaxPool2D
层来减小输入的大小,最后在最后使用 Flatten
层,然后使用 Dense
层.
例如:
model = keras.Sequential([
layers.Input((160, 160, 1)),
layers.Conv2D(32, 3, padding = 'same'),
layers.Conv2D(32, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(64, 3, padding = 'same'),
layers.Conv2D(64, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(128, 3, padding = 'same'),
layers.Conv2D(128, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(256, 3, padding = 'same'),
layers.Conv2D(256, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Flatten(),
layers.Dense(512),
layers.Dense(250),
])
如果您正在执行分类任务,这种架构会很好地工作,并且不会 运行 内存不足。
我想用来训练网络的图像大约有 4000px*3000px
大小和大约 40k
大小,按 250
类 排序。
我制作了如下所示的 CNN:
model = keras.Sequential([
layers.Input((imgHeight, imgWidth, 1)),
layers.Conv2D(16, 3, padding = 'same'), # filters, kernel_size
layers.Conv2D(32, 3, padding = 'same'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(250),
])
如何找出我需要的值 layers.Conv2D(*16*, ...)
?
我如何找出我需要的值 layers.Dense(*250*)
?
因为我无法开始训练过程,所以我 运行 内存不足。
Flatten()
层的输出形状为 9600 万,因此模型的最终密集层有 240 亿个参数,这就是你 运行ning 内存不足的原因。您可以采取一些步骤来解决此问题:
尝试将您的图像调整为较小的形状,如果 4000x3000x1
不是必需的,160x160x1 将是一个不错的选择。
尝试使用更多 Conv2D
层,然后使用 MaxPool2D
层来减小输入的大小,最后在最后使用 Flatten
层,然后使用 Dense
层.
例如:
model = keras.Sequential([
layers.Input((160, 160, 1)),
layers.Conv2D(32, 3, padding = 'same'),
layers.Conv2D(32, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(64, 3, padding = 'same'),
layers.Conv2D(64, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(128, 3, padding = 'same'),
layers.Conv2D(128, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Conv2D(256, 3, padding = 'same'),
layers.Conv2D(256, 3, padding = 'same'),
layers.MaxPooling2D((2,2)),
layers.Flatten(),
layers.Dense(512),
layers.Dense(250),
])
如果您正在执行分类任务,这种架构会很好地工作,并且不会 运行 内存不足。