Python 3.x 无法创建cudnn句柄:cudnn\u状态\u分配\u失败
以下是我正在使用的模型:Python 3.x 无法创建cudnn句柄:cudnn\u状态\u分配\u失败,python-3.x,tensorflow,keras,Python 3.x,Tensorflow,Keras,以下是我正在使用的模型: #import tensorflow as tf def create_model(): return tf.keras.models.Sequential([ #tf.keras.layers.Flatten(input_shape=(2,)), tf.keras.layers.Conv2D(filters=32,kernel_size=(3,3),strides=(1,1),input_shape=(156,256,3),padding='v
#import tensorflow as tf
def create_model():
return tf.keras.models.Sequential([
#tf.keras.layers.Flatten(input_shape=(2,)),
tf.keras.layers.Conv2D(filters=32,kernel_size=(3,3),strides=(1,1),input_shape=(156,256,3),padding='valid',data_format='channels_last',
activation='relu',kernel_initializer=tf.keras.initializers.he_normal(seed=0),name='Conv1'),
tf.keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2),padding='valid',data_format='channels_last',name='Pool1'),
tf.keras.layers.Conv2D(filters=64,kernel_size=(3,3),strides=(1,1),padding='valid',data_format='channels_last',
activation='relu',kernel_initializer=tf.keras.initializers.he_normal(seed=3),name='Conv2'),
tf.keras.layers.Conv2D(filters=64,kernel_size=(3,3),strides=(2,2),padding='valid',data_format='channels_last',
activation='relu',kernel_initializer=tf.keras.initializers.he_normal(seed=5),name='Conv3'),
tf.keras.layers.MaxPool2D(pool_size=(2,2),strides=(1,1),padding='valid',data_format='channels_last',name='Pool2'),
tf.keras.layers.Conv2D(filters=128,kernel_size=(3,3),strides=(2,2),padding='valid',data_format='channels_last',
activation='relu',kernel_initializer=tf.keras.initializers.he_normal(seed=9),name='Conv4'),
tf.keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2),padding='valid',data_format='channels_last',name='Pool3'),
tf.keras.layers.Flatten(data_format='channels_last',name='Flatten'),
tf.keras.layers.Dense(units=30,activation='relu',kernel_initializer=tf.keras.initializers.glorot_normal(seed=32),name='FC1'),
tf.keras.layers.Dense(units=15,activation='relu',kernel_initializer=tf.keras.initializers.glorot_normal(seed=33),name='FC2'),
tf.keras.layers.Dense(units=8,activation='softmax',kernel_initializer=tf.keras.initializers.glorot_normal(seed=3),name='Output'),
])
以下是我得到的错误:
UnknownError Traceback (most recent call last)
<ipython-input-47-264c0fcc37e1> in <module>
1 ##fitting generator
----> 2 model.fit_generator(ImageGenerator,steps_per_epoch=216,epochs=3)
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
1295 shuffle=shuffle,
1296 initial_epoch=initial_epoch,
-> 1297 steps_name='steps_per_epoch')
1298
1299 def evaluate_generator(self,
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training_generator.py in model_iteration(model, data, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch, mode, batch_size, steps_name, **kwargs)
263
264 is_deferred = not model._is_compiled
--> 265 batch_outs = batch_function(*batch_data)
266 if not isinstance(batch_outs, list):
267 batch_outs = [batch_outs]
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training.py in train_on_batch(self, x, y, sample_weight, class_weight, reset_metrics)
971 outputs = training_v2_utils.train_on_batch(
972 self, x, y=y, sample_weight=sample_weight,
--> 973 class_weight=class_weight, reset_metrics=reset_metrics)
974 outputs = (outputs['total_loss'] + outputs['output_losses'] +
975 outputs['metrics'])
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training_v2_utils.py in train_on_batch(model, x, y, sample_weight, class_weight, reset_metrics)
262 y,
263 sample_weights=sample_weights,
--> 264 output_loss_metrics=model._output_loss_metrics)
265
266 if reset_metrics:
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training_eager.py in train_on_batch(model, inputs, targets, sample_weights, output_loss_metrics)
309 sample_weights=sample_weights,
310 training=True,
--> 311 output_loss_metrics=output_loss_metrics))
312 if not isinstance(outs, list):
313 outs = [outs]
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training_eager.py in _process_single_batch(model, inputs, targets, output_loss_metrics, sample_weights, training)
250 output_loss_metrics=output_loss_metrics,
251 sample_weights=sample_weights,
--> 252 training=training))
253 if total_loss is None:
254 raise ValueError('The model cannot be run '
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\training_eager.py in _model_loss(model, inputs, targets, output_loss_metrics, sample_weights, training)
125 inputs = nest.map_structure(ops.convert_to_tensor, inputs)
126
--> 127 outs = model(inputs, **kwargs)
128 outs = nest.flatten(outs)
129
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py in __call__(self, inputs, *args, **kwargs)
889 with base_layer_utils.autocast_context_manager(
890 self._compute_dtype):
--> 891 outputs = self.call(cast_inputs, *args, **kwargs)
892 self._handle_activity_regularization(inputs, outputs)
893 self._set_mask_metadata(inputs, outputs, input_masks)
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\sequential.py in call(self, inputs, training, mask)
254 if not self.built:
255 self._init_graph_network(self.inputs, self.outputs, name=self.name)
--> 256 return super(Sequential, self).call(inputs, training=training, mask=mask)
257
258 outputs = inputs # handle the corner case where self.layers is empty
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\network.py in call(self, inputs, training, mask)
706 return self._run_internal_graph(
707 inputs, training=training, mask=mask,
--> 708 convert_kwargs_to_constants=base_layer_utils.call_context().saving)
709
710 def compute_output_shape(self, input_shape):
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\network.py in _run_internal_graph(self, inputs, training, mask, convert_kwargs_to_constants)
858
859 # Compute outputs.
--> 860 output_tensors = layer(computed_tensors, **kwargs)
861
862 # Update tensor_dict.
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py in __call__(self, inputs, *args, **kwargs)
889 with base_layer_utils.autocast_context_manager(
890 self._compute_dtype):
--> 891 outputs = self.call(cast_inputs, *args, **kwargs)
892 self._handle_activity_regularization(inputs, outputs)
893 self._set_mask_metadata(inputs, outputs, input_masks)
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\keras\layers\convolutional.py in call(self, inputs)
195
196 def call(self, inputs):
--> 197 outputs = self._convolution_op(inputs, self.kernel)
198
199 if self.use_bias:
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\ops\nn_ops.py in __call__(self, inp, filter)
1132 call_from_convolution=False)
1133 else:
-> 1134 return self.conv_op(inp, filter)
1135 # copybara:strip_end
1136 # copybara:insert return self.conv_op(inp, filter)
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\ops\nn_ops.py in __call__(self, inp, filter)
637
638 def __call__(self, inp, filter): # pylint: disable=redefined-builtin
--> 639 return self.call(inp, filter)
640
641
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\ops\nn_ops.py in __call__(self, inp, filter)
236 padding=self.padding,
237 data_format=self.data_format,
--> 238 name=self.name)
239
240
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\ops\nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, data_format, dilations, name, filters)
2008 data_format=data_format,
2009 dilations=dilations,
-> 2010 name=name)
2011
2012
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\ops\gen_nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, explicit_paddings, data_format, dilations, name)
1029 input, filter, strides=strides, use_cudnn_on_gpu=use_cudnn_on_gpu,
1030 padding=padding, explicit_paddings=explicit_paddings,
-> 1031 data_format=data_format, dilations=dilations, name=name, ctx=_ctx)
1032 except _core._SymbolicException:
1033 pass # Add nodes to the TensorFlow graph.
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\ops\gen_nn_ops.py in conv2d_eager_fallback(input, filter, strides, padding, use_cudnn_on_gpu, explicit_paddings, data_format, dilations, name, ctx)
1128 explicit_paddings, "data_format", data_format, "dilations", dilations)
1129 _result = _execute.execute(b"Conv2D", 1, inputs=_inputs_flat, attrs=_attrs,
-> 1130 ctx=_ctx, name=name)
1131 _execute.record_gradient(
1132 "Conv2D", _inputs_flat, _attrs, _result, name)
D:\anaconda\envs\tf_gpu\lib\site-packages\tensorflow_core\python\eager\execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
65 else:
66 message = e.message
---> 67 six.raise_from(core._status_to_exception(e.code, message), None)
68 except TypeError as e:
69 keras_symbolic_tensors = [
D:\anaconda\envs\tf_gpu\lib\site-packages\six.py in raise_from(value, from_value)
UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [Op:Conv2D]
UnknownError回溯(最近一次调用)
在里面
1##安装发电机
---->2型号。装配发生器(图像发生器,每个历元的步数=216,历元=3)
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training.py in-fit\u生成器(self、生成器、每个历元的步骤、历元、冗余、回调、验证数据、验证步骤、验证频率、类权重、最大队列大小、工作者、使用多处理、洗牌、初始历元)
1295洗牌=洗牌,
1296初始纪元=初始纪元,
->1297个步骤(每个时代的步骤)
1298
1299 def评估_发生器(自,
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training\u generator.py在模型迭代中(模型、数据、每个历元的步骤、历元、冗余、回调、验证数据、验证步骤、验证频率、类权重、最大队列大小、工人、使用多处理、随机、初始历元、模式、批大小、步骤名称、**kwargs)
263
264是延迟的=不是模型。\是编译的
-->265批处理输出=批处理功能(*批处理数据)
266如果不存在(批次,列表):
267批次输出=[批次输出]
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training.py in train\u on\u on\u批次(self、x、y、sample\u weight、class\u weight、reset\u metrics)
971输出=批次上的培训(
972自身,x,y=y,样本重量=样本重量,
-->973类权重=类权重,重置度量=重置度量)
974输出=(输出['总损耗]+输出['输出损耗']+
975个输出[“指标])
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training\u v2\u utils.py in train\u on\u批次(型号、x、y、样本重量、类别重量、重置度量)
262年,
263样本权重=样本权重,
-->264输出\损耗\度量=模型。\输出\损耗\度量)
265
266如果重置度量:
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training\u eager.py in train\u on\u批次(模型、输入、目标、样本权重、输出损失度量)
309样本重量=样本重量,
310训练=正确,
-->311输出损失度量=输出损失度量)
312如果不存在(输出,列表):
313出局=[出局]
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training\u eager.py in\u process\u single\u batch(模型、输入、目标、输出、损耗指标、样本权重、训练)
250输出损耗度量=输出损耗度量,
251样本权重=样本权重,
-->252培训=培训)
253如果总损失为零:
254 raise VALUE ERROR('模型无法运行'
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\training\u eager.py in\u model\u loss(模型、输入、目标、输出\u loss\u指标、样本权重、训练)
125输入=nest.map\u结构(ops.convert\u to\u张量,输入)
126
-->127输出=型号(输入,**kwargs)
128个输出=嵌套。展平(输出)
129
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\base\u layer.py in\uuuuuu调用(self,input,*args,**kwargs)
889,带基本\u层\u utils.autocast\u上下文\u管理器(
890自我计算类型):
-->891输出=自调用(cast_输入,*args,**kwargs)
892自我处理活动规则化(输入、输出)
893自设置掩码元数据(输入、输出、输入掩码)
调用中的D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\sequential.py(self、输入、训练、掩码)
254如果不是自建的:
255 self.\u init\u graph\u网络(self.inputs,self.outputs,name=self.name)
-->256返回超级(顺序,自)。调用(输入,训练=训练,掩码=掩码)
257
258输出=输入#处理self.layers为空的拐角情况
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\network.py in call(self、input、training、mask)
706返回自运行内部图(
707输入,训练=训练,面具=面具,
-->708将\u kwargs\u转换为\u常量=基本\u层\u utils.call\u context().saving)
709
710 def计算输出形状(自身、输入形状):
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\network.py in\u run\u internal\u图形(self、input、training、mask、convert\u kwargs\u to \u constants)
858
859#计算输出。
-->860输出张量=层(计算张量,**kwargs)
861
862#更新张量dict。
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\engine\base\u layer.py in\uuuuuu调用(self,input,*args,**kwargs)
889,带基本\u层\u utils.autocast\u上下文\u管理器(
890自我计算类型):
-->891输出=自调用(cast_输入,*args,**kwargs)
892自我处理活动规则化(输入、输出)
893自设置掩码元数据(输入、输出、输入掩码)
调用中的D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\keras\layers\convolutional.py(self,输入)
195
196 def呼叫(自身,输入):
-->197输出=自卷积(输入,自内核)
198
199如果自我使用偏差:
D:\anaconda\envs\tf\u gpu\lib\site packages\tensorflow\u core\python\ops\nn\u ops.py in\uuuu调用(self、inp、filter)
1132从\u调用\u(卷积=假)
1133其他:
->1134返回自转换操作(inp,过滤器)
1135#copybara:带#端
1136#copybara:插入返回self.conv_op(inp,filter)
D:\anacond
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_virtual_device_configuration(gpus[0],
[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=4000)])