python - 函数调用栈:train_function,车辆颜色识别
问题描述
我有这个 VGG 16 模型:
def vgg16(trainImages, trainLabels, testImages, testLabels):
trainImages = np.array(trainImages)
trainLabels = np.array(trainLabels)
testImages = np.array(testImages)
testLabels = np.array(testLabels)
model = Sequential()
model.add(Conv2D(input_shape = (224, 224, 3), filters = 64, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 64, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 128, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 128, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 256, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 256, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 256, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 512, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 512, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 512, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Conv2D(filters = 512, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 512, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(Conv2D(filters = 512, kernel_size = (3, 3), padding = "same", activation = "relu"))
model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))
model.add(Flatten())
model.add(Dense(units = 4096, activation = "relu"))
model.add(Dense(units = 4096, activation = "relu"))
model.add(Dense(units = 9, activation = "softmax"))
opt = Adam(learning_rate = 0.001)
model.compile(optimizer = opt, loss = keras.losses.sparse_categorical_crossentropy, metrics = ['accuracy'])
model.fit(trainImages, trainLabels, epochs = 7)
pred = model.predict(testImages)
print(pred)
我得到了这个错误
Epoch 1/7
2021-08-10 11:59:11.946324: I tensorflow/core/common_runtime/bfc_allocator.cc:1066] Stats:
Limit: 2247832372
InUse: 2183536128
MaxInUse: 2238205184
NumAllocs: 205
MaxAllocSize: 513546496
Reserved: 0
PeakReserved: 0
LargestFreeBlock: 0
2021-08-10 11:59:11.946718: W tensorflow/core/common_runtime/bfc_allocator.cc:467] ***************************************_********************************************************xxxx
2021-08-10 11:59:11.946908: W tensorflow/core/framework/op_kernel.cc:1767] OP_REQUIRES failed at conv_ops_fused_impl.h:778 : Resource exhausted: OOM when allocating tensor with shape[32,64,224,224] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
Traceback (most recent call last):
File "C:/Users/razva/OneDrive/Desktop/Vehicle Color Recognition/main.py", line 328, in <module>
vgg16(trainImages, trainLabels, testImages, testLabels)
File "C:/Users/razva/OneDrive/Desktop/Vehicle Color Recognition/main.py", line 285, in vgg16
model.fit(trainImages, trainLabels, epochs = 7)
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\keras\engine\training.py", line 1158, in fit
tmp_logs = self.train_function(iterator)
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\tensorflow\python\eager\def_function.py", line 889, in __call__
result = self._call(*args, **kwds)
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\tensorflow\python\eager\def_function.py", line 950, in _call
return self._stateless_fn(*args, **kwds)
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\tensorflow\python\eager\function.py", line 3023, in __call__
return graph_function._call_flat(
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\tensorflow\python\eager\function.py", line 1960, in _call_flat
return self._build_call_outputs(self._inference_function.call(
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\tensorflow\python\eager\function.py", line 591, in call
outputs = execute.execute(
File "C:\Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\tensorflow\python\eager\execute.py", line 59, in quick_execute
tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[32,64,224,224] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[node sequential/conv2d_1/Relu (defined at \Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\keras\backend.py:4700) ]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
[Op:__inference_train_function_1721]
Errors may have originated from an input operation.
Input Source operations connected to node sequential/conv2d_1/Relu:
sequential/conv2d_1/BiasAdd (defined at \Users\razva\miniconda3\envs\Vehicle Color Recognition\lib\site-packages\keras\layers\convolutional.py:263)
Function call stack:
train_function
输入形状为 (224, 224, 3)。我在前 4 行中使用了 np.array,因为我遇到了另一个错误。我有 9 门课要认识。我该如何解决这个错误以及为什么我得到它?我安装了cuda,这可能是问题吗?系统规格:Windows 10,Gtx 1650 4GB
解决方案
推荐阅读
- security - 用于禁用 AWS 上特定命名空间的所有 Internet 连接的 kubernetes 网络策略 - EKS
- android - 如何从 URL 获取视频缩略图
- apache-kafka - 如何使用 kafka 工具集生成具有空值的 Kafka 记录
- cuda - Nvidia GPU 同时访问全局内存中的单个位置
- cybersource - Flex MicroForm 信用卡品牌标志
- c++ - 使用 is_same_v 自动推导类型
- linux - Mac OS Catalina zshell:cat -A 是非法的,那么替代品是什么?
- java - 是否可以从 Kotlin 评论链接 Java 方法?
- node.js - 如何在文本索引Mongodb中将精确短语与动态字符串匹配?
- typo3 - TYPO3 - TCA 迁移 - 信息还是待办事项?