Python 如何理解predict_generator中的步骤参数?
我不太确定steps参数在predict_generator中的作用,我的理解是steps表示生成器生成的数据量,但有人否认我的答案,有人确认了我的答案 我通过实践仍然找不到正确的答案,我的方法是这样的,我用openslide读取一张5000x5000大小的图像,每个生成一张100x100的小地图来预测正常情况,我可以读取2500 100x100大小的图片,但当我设置步长=2500时是错误的 这是代码:Python 如何理解predict_generator中的步骤参数?,python,generator,keras,predict,Python,Generator,Keras,Predict,我不太确定steps参数在predict_generator中的作用,我的理解是steps表示生成器生成的数据量,但有人否认我的答案,有人确认了我的答案 我通过实践仍然找不到正确的答案,我的方法是这样的,我用openslide读取一张5000x5000大小的图像,每个生成一张100x100的小地图来预测正常情况,我可以读取2500 100x100大小的图片,但当我设置步长=2500时是错误的 这是代码: # coding=utf-8 from __future__ import division
# coding=utf-8
from __future__ import division
from keras.models import load_model
import openslide
import numpy as np
import Get_file_name
import generator
import matplotlib.pyplot as plt
def predict_model(img):
model = load_model(Get_file_name.model_path[0])
y= model.predict_generator(generator.pre_gen(img),steps=30)
print(y)
predict_model("cats_and_dogs_5")
这是错误的:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.5/dist-packages/keras/engine/training.py", line 612, in data_generator_task
generator_output = next(self._generator)
停止迭代
Traceback (most recent call last):
File "/home/zh/视频/MitosisDetection/mitosisDetection/predict.py", line 17, in <module>
predict_model("cats_and_dogs_5")
File "/home/zh/视频/MitosisDetection/mitosisDetection/predict.py", line 12, in predict_model
y= model.predict_generator(generator.pre_gen(img),steps=2500)
File "/usr/local/lib/python3.5/dist-packages/keras/legacy/interfaces.py", line 88, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/keras/models.py", line 1183, in predict_generator
verbose=verbose)
File "/usr/local/lib/python3.5/dist-packages/keras/legacy/interfaces.py", line 88, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/keras/engine/training.py", line 2108, in predict_generator
outs = self.predict_on_batch(x)
File "/usr/local/lib/python3.5/dist-packages/keras/engine/training.py", line 1696, in predict_on_batch
outputs = self.predict_function(ins)
File "/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py", line 2229, in __call__
feed_dict=feed_dict)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 778, in run
run_metadata_ptr)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 961, in _run
% (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape () for Tensor 'conv2d_1_input:0', which has shape '(?, 64, 64, 3)'
Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“/home/zh/视频/有丝分裂检测/有丝分裂检测/预测.py“,第17行,in
预测模型(“猫和狗5”)
文件“/home/zh/视频/有丝分裂检测/有丝分裂检测/预测.py”,预测模型第12行
y=模型预测发电机(发电机预发电机(img),步数=2500)
文件“/usr/local/lib/python3.5/dist-packages/keras/legacy/interfaces.py”,第88行,在包装器中
返回函数(*args,**kwargs)
文件“/usr/local/lib/python3.5/dist-packages/keras/models.py”,第1183行,在predict\u生成器中
详细的
文件“/usr/local/lib/python3.5/dist-packages/keras/legacy/interfaces.py”,第88行,在包装器中
返回函数(*args,**kwargs)
文件“/usr/local/lib/python3.5/dist-packages/keras/engine/training.py”,第2108行,在predict\u生成器中
outs=批次上的自我预测(x)
文件“/usr/local/lib/python3.5/dist-packages/keras/engine/training.py”,第1696行,在批处理中预测
输出=自预测功能(ins)
文件“/usr/local/lib/python3.5/dist packages/keras/backend/tensorflow\u backend.py”,第2229行,在调用中__
进纸量=进纸量(进纸量)
文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py”,第778行,正在运行
运行_元数据_ptr)
文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py”,第961行,正在运行
%(np_val.shape,subfeed_t.name,str(subfeed_t.get_shape()))
ValueError:无法为具有形状“(?,64,64,3)”的张量“conv2d_1_输入:0”提供形状()的值
进程已完成,退出代码为1
如果步骤表示生成器生成的数据量,那么为什么将步骤设置为2500错误?如果步骤不表示生成器生成的数据量,那么我应该怎么做?如何设置生成器生成的数据量?
请上帝多多指教,我今天在身边,很多人都不明白这件事