这是我的代码:
y_lbl = np.array([4])
i = 0
for imgfile in glob.glob("./data/trigger/content/*.png"):
i += 1
im = Image.open(imgfile)
im = np.array(im)
im = im.reshape(1, 28, 28, 1) / 255.0
if i == 1:
x_train = im
y_train = y_lbl
else:
x_train = np.append(x_train, im, axis=0)
y_train = np.append(y_train, y_lbl)
y_wm = np_utils.to_categorical(y_train, num_classes=10)
错误是:
Using TensorFlow backend.
Traceback (most recent call last):
File "test.py", line 33, in <module>
y_train = np_utils.to_categorical(y_train, num_classes=10)
NameError: name 'y_train' is not defined
我以前写过类似的代码,并且可以正常运行。我不知道为什么它在这里不起作用。我查了一些类似的问题,但是没有答案可以解决我的问题。 如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:1)
您仅在本质上是一个if语句中设置y_train变量。在您声明时;
for imgfile in glob.glob("./data/trigger/content/*.png"):
仅当目标路径中有文件时,此代码才运行。您实质上是在声明是否存在文件,将它们循环。
y_wm = np_utils.to_categorical(y_train, num_classes=10)
然后在for循环外运行此行,如果for循环不运行,则永远不会定义y_train变量。
您可以通过在运行for循环之前定义变量来解决此问题,以确保有对其的引用。
y_train = None
然后,当您要运行最终语句时,可以检查该值是否已调整(已找到文件)
if y_train is not None:
y_wm = np_utils.to_categorical(y_train, num_classes=10)
else:
print("No files found!")