Skip to main content
 首页 » 编程设计

python之tensorflow.python.framework.errors_impl.NotFoundError : Failed to create a NewWriteableFile: 错误

2025年01月19日34JustinYoung

下面是 python 代码。但是遇到一些异常我也附加了那个异常

    """ 
Usage: 
  # From tensorflow/models/ 
  # Create train data: 
  python generate_tfrecord.py --csv_input=data\train_labels.csv  --output_path=data\train.record     
 
  # Create test data: 
  python generate_tfrecord.py --csv_input=data\test_labels.csv  --output_path=data\test.record 
""" 
from __future__ import division 
from __future__ import print_function 
from __future__ import absolute_import 
 
import os 
import io 
import pandas as pd 
import tensorflow as tf 
 
from PIL import Image 
from object_detection.utils import dataset_util 
from collections import namedtuple, OrderedDict 
 
flags = tf.app.flags 
flags.DEFINE_string('csv_input', '', 'Path to the CSV input') 
flags.DEFINE_string('output_path', '', 'Path to output TFRecord') 
FLAGS = flags.FLAGS 
 
 
# TO-DO replace this with label map 
def class_text_to_int(row_label): 
    if row_label == 'scssior': 
        return 1 
    else: 
        None 
 
 
def split(df, group): 
    data = namedtuple('data', ['filename', 'object']) 
    gb = df.groupby(group) 
    return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)] 
 
 
def create_tf_example(group, path): 
    with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid: 
        encoded_jpg = fid.read() 
    encoded_jpg_io = io.BytesIO(encoded_jpg) 
    image = Image.open(encoded_jpg_io) 
    width, height = image.size 
 
    filename = group.filename.encode('utf8') 
    image_format = b'jpg' 
    xmins = [] 
    xmaxs = [] 
    ymins = [] 
    ymaxs = [] 
    classes_text = [] 
    classes = [] 
 
    for index, row in group.object.iterrows(): 
        xmins.append(row['xmin'] / width) 
        xmaxs.append(row['xmax'] / width) 
        ymins.append(row['ymin'] / height) 
        ymaxs.append(row['ymax'] / height) 
        classes_text.append(row['class'].encode('utf8')) 
        classes.append(class_text_to_int(row['class'])) 
 
    tf_example = tf.train.Example(features=tf.train.Features(feature={ 
        'image/height': dataset_util.int64_feature(height), 
        'image/width': dataset_util.int64_feature(width), 
        'image/filename': dataset_util.bytes_feature(filename), 
        'image/source_id': dataset_util.bytes_feature(filename), 
        'image/encoded': dataset_util.bytes_feature(encoded_jpg), 
        'image/format': dataset_util.bytes_feature(image_format), 
        'image/object/bbox/xmin': dataset_util.float_list_feature(xmins), 
        'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs), 
        'image/object/bbox/ymin': dataset_util.float_list_feature(ymins), 
        'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs), 
        'image/object/class/text': dataset_util.bytes_list_feature(classes_text), 
        'image/object/class/label': dataset_util.int64_list_feature(classes), 
    })) 
    return tf_example 
 
 
def main(_): 
    writer = tf.python_io.TFRecordWriter(FLAGS.output_path) 
    path = os.path.join(os.getcwd(), 'images') 
    examples = pd.read_csv(FLAGS.csv_input) 
    grouped = split(examples, 'filename') 
    for group in grouped: 
        tf_example = create_tf_example(group, path) 
        writer.write(tf_example.SerializeToString()) 
 
    writer.close() 
    output_path = os.path.join(os.getcwd(), FLAGS.output_path) 
    print('Successfully created the TFRecords: {}'.format(output_path)) 
 
 
if __name__ == '__main__': 
    tf.app.run() 

以上代码在 Windows 10 中出现以下错误。

   Traceback (most recent call last): 
  File "D:\tensorflow_custom_image\generate_tfrecord.py", line 99, in <module> 
    tf.app.run() 
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\platform\app.py", line 126, in run 
    _sys.exit(main(argv)) 
  File "D:\tensorflow_custom_image\generate_tfrecord.py", line 85, in main 
    writer = tf.python_io.TFRecordWriter(FLAGS.output_path) 
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\lib\io\tf_record.py", line 111, in __init__ 
    compat.as_bytes(path), compat.as_bytes(compression_type), status) 
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 516, in __exit__ 
    c_api.TF_GetCode(self.status.status)) 
tensorflow.python.framework.errors_impl.NotFoundError: Failed to create a NewWriteableFile:  : The system cannot find the path specified. 
; No such process 

为什么我在 Windows 10 中执行以下注释时出现上述异常。请修复并给出解释 generate_tfrecord.py --csv_input=data\train_labels.csv --output_path=data\train.record

请您参考如下方法:

flags.DEFINE_string('csv_input', '', 'CSV 输入路径') flags.DEFINE_string('output_path', '', '输出 TFRecord 的路径')
用实际路径替换“CSV 输入路径”和“输出 TFRecord 路径”。