为什么我在运行`python ./train.py`时在终端中收到’FileNotFoundError: [Errno 2] No such file or directory:’错误?

我正在按照一篇关于训练户外图像分类器的研究论文作者提供的步骤进行操作。(Github: https://github.com/yuxiaoz/SGSN)然而,这是我在Ubuntu终端中遇到的错误:

Traceback (most recent call last):  File "./train.py", line 165, in <module>    main()  File "./train.py", line 63, in main    x_datalists = get_data_lists(args.x_data_txt_path) # x图像列表  File "./train.py", line 47, in get_data_lists    f = open(data_path, 'r')FileNotFoundError: [Errno 2] No such file or directory: './datasets/x_traindata.txt'

这是作者提供的训练Python代码:

import argparsefrom datetime import datetimefrom random import shuffleimport osimport sysimport timeimport mathimport tensorflow as tfimport numpy as npfrom utils import *from train_image_reader import *from net import *parser = argparse.ArgumentParser(description='')parser.add_argument("--snapshot_dir", default='./snapshots', help="快照路径")parser.add_argument("--image_size", type=int, default=256, help="加载图像大小")parser.add_argument("--x_data_txt_path", default='./datasets/x_traindata.txt', help="x图像的txt文件")parser.add_argument("--y_data_txt_path", default='./datasets/y_traindata.txt', help="y图像的txt文件")parser.add_argument("--random_seed", type=int, default=1234, help="随机种子")parser.add_argument('--base_lr', type=float, default=0.0002, help='adam的初始学习率')parser.add_argument('--epoch', dest='epoch', type=int, default=50, help='轮数')parser.add_argument('--epoch_step', dest='epoch_step', type=int, default=20, help='衰减学习率的轮数')parser.add_argument("--lamda", type=float, default=10.0, help="L1 lambda")parser.add_argument('--beta1', dest='beta1', type=float, default=0.5, help='adam的动量项')parser.add_argument("--summary_pred_every", type=int, default=200, help="汇总的次数")parser.add_argument("--save_pred_every", type=int, default=8000, help="保存的次数")parser.add_argument("--x_image_forpath", default='./datasets/train/X/images/', help="x训练数据的路径")parser.add_argument("--x_label_forpath", default='./datasets/train/X/labels/', help="x训练标签的路径")parser.add_argument("--y_image_forpath", default='./datasets/train/Y/images/', help="y训练数据的路径")parser.add_argument("--y_label_forpath", default='./datasets/train/Y/labels/', help="y训练标签的路径")args = parser.parse_args()def save(saver, sess, logdir, step):   model_name = 'model'   checkpoint_path = os.path.join(logdir, model_name)   if not os.path.exists(logdir):      os.makedirs(logdir)   saver.save(sess, checkpoint_path, global_step=step)   print('已创建检查点。')def get_data_lists(data_path):    f = open(data_path, 'r')    datas=[]    for line in f:        data = line.strip("\n")        datas.append(data)    return datasdef l1_loss(src, dst):    return tf.reduce_mean(tf.abs(src - dst))def gan_loss(src, dst):    return tf.reduce_mean((src-dst)**2)def main():    if not os.path.exists(args.snapshot_dir):        os.makedirs(args.snapshot_dir)    x_datalists = get_data_lists(args.x_data_txt_path) # x图像列表    y_datalists = get_data_lists(args.y_data_txt_path) # y图像列表    tf.set_random_seed(args.random_seed)    x_img = tf.placeholder(tf.float32,shape=[1, args.image_size, args.image_size,3],name='x_img')    x_label = tf.placeholder(tf.float32,shape=[1, args.image_size, args.image_size,3],name='x_label')    y_img = tf.placeholder(tf.float32,shape=[1, args.image_size, args.image_size,3],name='y_img')    y_label = tf.placeholder(tf.float32,shape=[1, args.image_size, args.image_size,3],name='y_label')    fake_y = generator(image=x_img, reuse=False, name='generator_x2y') # G    fake_x_ = generator(image=fake_y, reuse=False, name='generator_y2x') # S    fake_x = generator(image=y_img, reuse=True, name='generator_y2x') # G'    fake_y_ = generator(image=fake_x, reuse=True, name='generator_x2y') # S'    dy_fake = discriminator(image=fake_y, gen_label = x_label, reuse=False, name='discriminator_y') # D    dx_fake = discriminator(image=fake_x, gen_label = y_label, reuse=False, name='discriminator_x') # D'    dy_real = discriminator(image=y_img, gen_label = y_label, reuse=True, name='discriminator_y') # D    dx_real = discriminator(image=x_img, gen_label = x_label, reuse=True, name='discriminator_x') #D'

我还添加了一张包含文件的目录截图以供参考

注意:我偶然发现了一个类似的问题和提出的解决方案在这里(IOError: [Errno 2] No such file or directory (when it really exist) Python)。但我不太确定如何或在哪里在作者的代码中实现它。


回答:

从日志中可以看出你运行的文件是./train.py,你的调用是正确的。

现在,在存储库中我看不到任何x_traindata.txt文件。文件夹中唯一可用的只有3个Python文件,除非你自己创建了那个文件,否则错误似乎是合理的,因为里面没有txt文件。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注