我正在使用带有Tensorflow的Keras作为后端.
我试图在我的主进程中保存模型,然后model.predict在另一个进程中加载/运行(即调用).
我目前只是尝试从文档中保存/加载模型的天真方法:https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model.
所以基本上:
model.save() 在主要过程中model = load_model() 在儿童过程中model.predict() 在儿童过程中但是,它只是挂在load_model电话上.
搜索周围我发现了这个可能相关的答案,表明Keras只能在一个过程中使用:与theano一起使用多处理但不确定这是否属实(似乎在这方面似乎找不到太多).
有没有办法实现我的目标?非常感谢高级别描述或简短示例.
注意:我尝试了将图形传递给流程的方法但是失败了,因为似乎张流图不可选(这里有相关的SO帖子:Tensorflow:将会话传递给python多进程).如果确实有一种方法可以将张量流图/模型传递给子进程,那么我也对此持开放态度.
谢谢!
python neural-network python-multiprocessing keras tensorflow
有没有办法我们可以在Sklearn或任何其他库中一次网格搜索多个估算器.例如,我们可以在一次网格搜索中传递SVM和随机森林吗?
我无法理解这条错误消息试图告诉我的内容.
看一下我模型的总结,我看的是最后几层.
但是当我适应我的模型时,我得到了这个:
我不明白.如果我仔细阅读,Keras似乎在说,"我查看了验证集的标签(目标),明智地,这让我觉得模型中的最后一层应该被塑造(None,2).但是,而不是在模型中实际获得最后一层形状(无,2),该层由一个实际数组组成.这是另一种形状."
这毫无意义.
我认为我怀疑这个错误确实应该说,一般来说:
"ValueError: Error when checking model target: although dense_n has shape (x, y), the shape of the target, (a,b), in incompatible." .
有人关心同意还是不同意?谢谢.
(有一个类似的问题在这里,但不是非常有帮助.)
语境
为了fit_generator()在 Keras 中使用,我使用了一个像这样的伪代码-one的生成器函数:
def generator(data: np.array) -> (np.array, np.array):
"""Simple generator yielding some samples and targets"""
while True:
for batch in range(number_of_batches):
yield data[batch * length_sequence], data[(batch + 1) * length_sequence]
Run Code Online (Sandbox Code Playgroud)
在 Keras 的fit_generator()函数中,我想使用workers=4并且use_multiprocessing=True- 因此,我需要一个线程安全生成器。
在像here或here或Keras docs这样的stackoverflow的答案中,我读到了关于创建一个从Keras.utils.Sequence()这样继承的类:
class generatorClass(Sequence):
def __init__(self, x_set, y_set, batch_size):
self.x, self.y = x_set, y_set
self.batch_size = batch_size
def __len__(self):
return int(np.ceil(len(self.x) / float(self.batch_size)))
def __getitem__(self, idx):
batch_x …Run Code Online (Sandbox Code Playgroud)