相关疑难解决方法(0)

Python中的Keras + Tensorflow和Multiprocessing

我正在使用带有Tensorflow的Keras作为后端.

我试图在我的主进程中保存模型,然后model.predict在另一个进程中加载/运行(即调用).

我目前只是尝试从文档中保存/加载模型的天真方法:https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model.
所以基本上:

  1. model.save() 在主要过程中
  2. model = load_model() 在儿童过程中
  3. model.predict() 在儿童过程中

但是,它只是挂在load_model电话上.

搜索周围我发现了这个可能相关的答案,表明Keras只能在一个过程中使用:与theano一起使用多处理但不确定这是否属实(似乎在这方面似乎找不到太多).

有没有办法实现我的目标?非常感谢高级别描述或简短示例.

注意:我尝试了将图形传递给流程的方法但是失败了,因为似乎张流图不可选(这里有相关的SO帖子:Tensorflow:将会话传递给python多进程).如果确实有一种方法可以将张量流图/模型传递给子进程,那么我也对此持开放态度.

谢谢!

python neural-network python-multiprocessing keras tensorflow

29
推荐指数
2
解决办法
2万
查看次数

在一次网格搜索中尝试多个估算器

有没有办法我们可以在Sklearn或任何其他库中一次网格搜索多个估算器.例如,我们可以在一次网格搜索中传递SVM和随机森林吗?

scikit-learn grid-search

12
推荐指数
3
解决办法
5498
查看次数

检查模型目标时出错:期望dense_24具有形状...但是在Keras中得到了具有形状的数组...

我无法理解这条错误消息试图告诉我的内容.

看一下我模型的总结,我看的是最后几层.

在此输入图像描述

但是当我适应我的模型时,我得到了这个:

在此输入图像描述

我不明白.如果我仔细阅读,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." .

有人关心同意还是不同意?谢谢.

(有一个类似的问题在这里,但不是非常有帮助.)

arrays keras

8
推荐指数
1
解决办法
3336
查看次数

关于 fit_generator() / fit() 和线程安全

语境

为了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- 因此,我需要一个线程安全生成器。

在像herehere或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)

python multithreading thread-safety multiprocessing keras

8
推荐指数
1
解决办法
3593
查看次数