Python Keras-CNN分类器

Python Keras-CNN分类器,python,python-3.x,keras,theano,Python,Python 3.x,Keras,Theano,我确实有一个关于Keras的CNN的问题,如果你愿意帮助我,我将非常感谢 免责声明:我是CNN和Keras的noob,我现在只是在学习他们 我的数据: data_path = Path("../data") train_path = data_path / "train" test_path = data_path / "test" valid_path = data_path / "valid" train_batch = ImageDataGenerator().flow_from_d

我确实有一个关于Keras的CNN的问题,如果你愿意帮助我,我将非常感谢

免责声明:我是CNN和Keras的noob,我现在只是在学习他们


我的数据:

data_path = Path("../data")

train_path = data_path / "train"
test_path = data_path / "test"
valid_path = data_path / "valid"

train_batch = ImageDataGenerator().flow_from_directory(directory=train_path,
                                                       target_size=(200, 200),
                                                       classes=animals,
                                                       batch_size=10)

valid_batch = ImageDataGenerator().flow_from_directory(directory=valid_path,
                                                       target_size=(200, 200),
                                                       classes=animals,
                                                       batch_size=10)

test_path = ImageDataGenerator().flow_from_directory(directory=test_path,
                                                     target_size=(200, 200),
                                                     classes=animals,
                                                     batch_size=4)

imgs, labels = next(train_batch)

model = Sequential(
    [Conv2D(32, (3, 3), activation="relu", input_shape=(200, 200, 3)), Flatten(),
     Dense(len(animals), activation='softmax')])

model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])

model.fit_generator(train_path, steps_per_epoch=4, validation_data=valid_batch, validation_steps=3, epochs=5, verbose=2)
2班(狗和猫)

培训:每类30张

测试:每个类别14张图片

有效期:每类30张


我的代码:

data_path = Path("../data")

train_path = data_path / "train"
test_path = data_path / "test"
valid_path = data_path / "valid"

train_batch = ImageDataGenerator().flow_from_directory(directory=train_path,
                                                       target_size=(200, 200),
                                                       classes=animals,
                                                       batch_size=10)

valid_batch = ImageDataGenerator().flow_from_directory(directory=valid_path,
                                                       target_size=(200, 200),
                                                       classes=animals,
                                                       batch_size=10)

test_path = ImageDataGenerator().flow_from_directory(directory=test_path,
                                                     target_size=(200, 200),
                                                     classes=animals,
                                                     batch_size=4)

imgs, labels = next(train_batch)

model = Sequential(
    [Conv2D(32, (3, 3), activation="relu", input_shape=(200, 200, 3)), Flatten(),
     Dense(len(animals), activation='softmax')])

model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])

model.fit_generator(train_path, steps_per_epoch=4, validation_data=valid_batch, validation_steps=3, epochs=5, verbose=2)

这是我的错误消息:

data_path = Path("../data")

train_path = data_path / "train"
test_path = data_path / "test"
valid_path = data_path / "valid"

train_batch = ImageDataGenerator().flow_from_directory(directory=train_path,
                                                       target_size=(200, 200),
                                                       classes=animals,
                                                       batch_size=10)

valid_batch = ImageDataGenerator().flow_from_directory(directory=valid_path,
                                                       target_size=(200, 200),
                                                       classes=animals,
                                                       batch_size=10)

test_path = ImageDataGenerator().flow_from_directory(directory=test_path,
                                                     target_size=(200, 200),
                                                     classes=animals,
                                                     batch_size=4)

imgs, labels = next(train_batch)

model = Sequential(
    [Conv2D(32, (3, 3), activation="relu", input_shape=(200, 200, 3)), Flatten(),
     Dense(len(animals), activation='softmax')])

model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])

model.fit_generator(train_path, steps_per_epoch=4, validation_data=valid_batch, validation_steps=3, epochs=5, verbose=2)
我已将路径替换为“”

回溯(最近一次呼叫最后一次):
文件“”,第191行,在
模型拟合生成器(训练路径,每个历元的步骤=4,验证数据=有效批次,验证步骤=3,历元=5,详细=2)
文件“y”,第91行,在包装器中
返回函数(*args,**kwargs)
文件“”,第1732行,在fit_生成器中
初始_历元=初始_历元)
文件“”,第185行,在fit_生成器中
发电机输出=下一个(输出发电机)
文件“”,第742行,在get中
六、重放(*sys.exc_info())
文件“”,第693行,重新放置
增值
get中第711行的文件“”
输入=future.get(超时=30)
get中第657行的文件“”
提升自我价值
文件“”,第121行,在worker中
结果=(True,func(*args,**kwds))
文件“”,第650行,在下一个样本中
返回六个。下一个(\u共享\u序列[uid])
TypeError:“PosixPath”对象不是迭代器


谁能解释一下我做错了什么?另外,如果这是一个离题的问题,请告诉我可以在哪里提问。

这句话没有必要

imgs,标签=下一个(批量生产)

从fit_生成器中,第一个参数是一个生成器对象,没有您提供的字符串。像这样


model.fit\u生成器(训练路径,每个历元的步骤=4,验证数据=valid\u batch,验证步骤=3,历元=5,verbose=2)

您遇到的问题是,您没有为训练传递生成器,而是传递文件的路径(您使用的是
列车路径
而不是
列车批次

而在使用
时,您需要为对象传递生成器。fit\u generator()


你应该通过训练批而不是我认为的训练路径。试试这个:
model.fit\u生成器(训练批,每个历元的步骤=4,验证数据=valid\u批,验证步骤=3,历元=5,详细=2)
哦,太好了,你是对的,那是个错误。非常感谢:DI刚刚把我的评论变成了一个答案,因为你告诉我它帮助你解决了问题!我对链接进行了评论,但没有任何改变,一切都是一样的。你也更新了你的
模型。fit_generator
功能如我上面所述?