Python Keras-CNN分类器
我确实有一个关于Keras的CNN的问题,如果你愿意帮助我,我将非常感谢 免责声明:我是CNN和Keras的noob,我现在只是在学习他们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
我的数据:
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
功能如我上面所述?