python找不到对象怎么办_Python ImportError:找不到'nvcuda.dll'

我只想使用tensorflow从inception预训练模型进行对象识别&我使用以下代码:from __future__ import absolute_import

from __future__ import division

from __future__ import print_function

import argparse

import os.path

import re

import sys

import tarfile

import numpy as np

from six.moves import urllib

import tensorflow as tf

FLAGS = None

# pylint: disable=line-too-long

DATA_URL = 'http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz'

# pylint: enable=line-too-long

class NodeLookup(object):

def __init__(self,

label_lookup_path=None,

uid_lookup_path=None):

if not label_lookup_path:

label_lookup_path = os.path.join(

FLAGS.model_dir, 'imagenet_2012_challenge_label_map_proto.pbtxt')

if not uid_lookup_path:

uid_lookup_path = os.path.join(

FLAGS.model_dir, 'imagenet_synset_to_human_label_map.txt')

self.node_lookup = self.load(label_lookup_path, uid_lookup_path)

def load(self, label_lookup_path, uid_lookup_path):

if not tf.gfile.Exists(uid_lookup_path):

tf.logging.fatal('File does not exist %s', uid_lookup_path)

if not tf.gfile.Exists(label_lookup_path):

tf.logging.fatal('File does not exist %s', label_lookup_path)

# Loads mapping from string UID to human-readable string

proto_as_ascii_lines = tf.gfile.GFile(uid_lookup_path).readlines()

uid_to_human = {}

p = re.compile(r'[n\d]*[ \S,]*')

for line in proto_as_ascii_lines:

parsed_items = p.findall(line)

uid = parsed_items[0]

human_string = parsed_items[2]

uid_to_human[uid] = human_string

# Loads mapping from string UID to integer node ID.

node_id_to_uid = {}

proto_as_ascii = tf.gfile.GFile(label_lookup_path).readlines()

for line in proto_as_ascii:

if line.startswith(' target_class:'):

target_class = int(line.split(': ')[1])

if line.startswith(' target_class_string:'):

target_class_string = line.split(': ')[1]

node_id_to_uid[target_class] = target_class_string[1:-2]

# Loads the final mapping of integer node ID to human-readable string

node_id_to_name = {}

for key, val in node_id_to_uid.items():

if val not in uid_to_human:

tf.logging.fatal('Failed to locate: %s', val)

name = uid_to_human[val]

node_id_to_name[key] = name

return node_id_to_name

def id_to_string(self, node_id):

if node_id not in self.node_lookup:

return ''

return self.node_lookup[node_id]

def create_graph():

# Creates graph from saved graph_def.pb.

with tf.gfile.FastGFile(os.path.join(

FLAGS.model_dir, 'classify_image_graph_def.pb'), 'rb') as f:

graph_def = tf.GraphDef()

graph_def.ParseFromString(f.read())

_ = tf.import_graph_def(graph_def, name='')

def run_inference_on_image(image):

if not tf.gfile.Exists(image):

tf.logging.fatal('File does not exist %s', image)

image_data = tf.gfile.FastGFile(image, 'rb').read()

# Creates graph from saved GraphDef.

create_graph()

with tf.Session() as sess:

softmax_tensor = sess.graph.get_tensor_by_name('softmax:0')

predictions = sess.run(softmax_tensor,

{'DecodeJpeg/contents:0': image_data})

predictions = np.squeeze(predictions)

# Creates node ID --> English string lookup.

node_lookup = NodeLookup()

top_k = predictions.argsort()[-FLAGS.num_top_predictions:][::-1]

for node_id in top_k:

human_string = node_lookup.id_to_string(node_id)

score = predictions[node_id]

print('%s (score = %.5f)' % (human_string, score))

def maybe_download_and_extract():

"""Download and extract model tar file."""

dest_directory = FLAGS.model_dir

if not os.path.exists(dest_directory):

os.makedirs(dest_directory)

filename = DATA_URL.split('/')[-1]

filepath = os.path.join(dest_directory, filename)

if not os.path.exists(filepath):

def _progress(count, block_size, total_size):

sys.stdout.write('\r>> Downloading %s %.1f%%' % (

filename, float(count * block_size) / float(total_size) * 100.0))

sys.stdout.flush()

filepath, _ = urllib.request.urlretrieve(DATA_URL, filepath, _progress)

print()

statinfo = os.stat(filepath)

print('Successfully downloaded', filename, statinfo.st_size, 'bytes.')

tarfile.open(filepath, 'r:gz').extractall(dest_directory)

def main(_):

maybe_download_and_extract()

image = (FLAGS.image_file if FLAGS.image_file else

os.path.join(FLAGS.model_dir, 'cropped_panda.jpg'))

run_inference_on_image(image)

if __name__ == '__main__':

parser = argparse.ArgumentParser()

parser.add_argument(

'--model_dir',

type=str,

default='/tmp/imagenet',

help="""\

Path to classify_image_graph_def.pb,

imagenet_synset_to_human_label_map.txt, and

imagenet_2012_challenge_label_map_proto.pbtxt.\

"""

)

parser.add_argument(

'--image_file',

type=str,

default='',

help='Absolute path to image file.'

)

parser.add_argument(

'--num_top_predictions',

type=int,

default=5,

help='Display this many predictions.'

)

FLAGS, unparsed = parser.parse_known_args()

tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)

我从这个repo中找到这段代码,我通过在cmd“python”中给出命令来简单地运行它分类.py“然后它显示了这个错误Traceback (most recent call last):

File "C:\Users---\Python\Python36\lib\site-packages\tensorflow\python\platform\self_check.py", line 62, in preload_check

ctypes.WinDLL(build_info.nvcuda_dll_name)

File "C:\Users---\Python\Python36\lib\ctypes__init__.py", line 348, in init

self._handle = _dlopen(self._name, mode)

OSError: [WinError 126] The specified module could not be found

在处理上述异常时,发生了另一个异常:Traceback (most recent call last): File "obj_recog.py", line 41, in

import tensorflow as tf File "C:\Users---\Python\Python36\lib\site-packages\tensorflow__init__.py",

line 22, in

from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import File

"C:\Users---\Python\Python36\lib\site-packages\tensorflow\python__init__.py",

line 49, in

from tensorflow.python import pywrap_tensorflow File "C:\Users---\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py",

line 30, in

self_check.preload_check() File "C:\Users---\Python\Python36\lib\site-packages\tensorflow\python\platform\self_check.py",

line 70, in preload_check

% build_info.nvcuda_dll_name) ImportError: Could not find 'nvcuda.dll'. TensorFlow requires that this DLL be installed in a

directory that is named in your %PATH% environment variable. Typically

it is installed in 'C:\Windows\System32'. If it is not present, ensure

that you have a CUDA-capable GPU with the correct driver installed.

你可能感兴趣的:(python找不到对象怎么办)