Keras:“赋值前引用局部变量'val'u ins'”

2024-10-01 07:40:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用七个类训练一个基本的图像分类器,在Fit中我得到了一个Python错误,我找不到其他人在谈论这个错误。在

from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from PIL import Image
import numpy as np
import os

imageSide = 256

def buildAndTrainNetwork():
    classifier = Sequential()

    classifier.add(Conv2D(32, (3, 3), input_shape = (imageSide, imageSide, 3), activation = 'relu', data_format="channels_last"))

    classifier.add(MaxPooling2D(pool_size = (2, 2)))

    classifier.add(Flatten())

    classifier.add(Dense(units = 128, activation = 'relu'))
    classifier.add(Dense(units = 7, activation = 'sigmoid'))

    classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

    labelList = [('CarHatchback', [1,0,0,0,0,0,0]), ('CarMinivan', [0,1,0,0,0,0,0]), ('CarPickup', [0,0,1,0,0,0,0]), ('CarSaloon', [0,0,0,1,0,0,0]), ('CarSmart', [0,0,0,0,1,0,0]), ('CarSports', [0,0,0,0,0,1,0]), ('CarVan', [0,0,0,0,0,0,1])]

    train_data = []
    train_labels = []

    test_data = []


    for label,labelData in labelList:
        dir = "mlData/train/" + label

        for img in os.listdir(dir):
            path = os.path.join(dir, img)
            img = Image.open(path)
            img = img.convert('RGB')
            img = img.resize((imageSide, imageSide), Image.ANTIALIAS)

            img = np.array(img)

            train_data.append(img)
            train_labels.append(labelData)


    for label,labelData in labelList:
        dir = "mlData/test/" + label

        for img in os.listdir(dir):
            path = os.path.join(dir, img)
            img = Image.open(path)
            img = img.convert('RGB')
            img = img.resize((imageSide, imageSide), Image.ANTIALIAS)

            img = np.array(img)

            test_data.append(img)

    train_data = np.array(train_data)
    test_data = np.array(test_data)
    train_labels = np.array(train_labels)

    print("Training shape:")
    print(train_data.shape)
    print("Train labels shape:")
    print(train_labels.shape)
    print("Testing shape:")
    print(test_data.shape)

    classifier.fit(
        train_data,
        train_labels,
        steps_per_epoch=8000,
        epochs=10,
        validation_data=test_data,
        validation_steps=800
    )


#

buildAndTrainNetwork()

我收到的错误是:

File "/home/ian/.local/lib/python3.6/site-packages/keras/engine/training.py", line 1034, in fit val_ins=val_ins, UnboundLocalError: local variable 'val_ins' referenced before assignment

仅供参考,形状输出为:

^{pr2}$

我假设我没有正确格式化输入数据,但是我很难看到实际的错误。在


Tags: pathfromtestimportimgdatalabelsdir
1条回答
网友
1楼 · 发布于 2024-10-01 07:40:28

classifier.fit中的validation_data应该是一个包含测试图像(您已经有了)和测试标签的元组,但是您已经忘记加载了。在

for label,labelData in labelList:
    dir = "mlData/test/" + label

    for img in os.listdir(dir):
        # ...

        test_data.append(img)
        test_labels.append(labelData)  # add this

那么

^{pr2}$

相关问题 更多 >