我正在按照一篇关于训练户外图像分类器的研究论文作者提供的步骤进行操作。(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文件。