相关疑难解决方法(0)

TensorFlow/Keras多线程模型拟合

我正在尝试keras使用多个线程(和tensorflow后端)训练具有不同参数值的多个模型.我已经看到了在多个线程中使用相同模型的一些示例,但在这种特殊情况下,我遇到了有关冲突图等的各种错误.这是我希望能够做的一个简单示例:

from concurrent.futures import ThreadPoolExecutor
import numpy as np
import tensorflow as tf
from keras import backend as K
from keras.layers import Dense
from keras.models import Sequential


sess = tf.Session()


def example_model(size):
    model = Sequential()
    model.add(Dense(size, input_shape=(5,)))
    model.add(Dense(1))
    model.compile(optimizer='sgd', loss='mse')
    return model


if __name__ == '__main__':
    K.set_session(sess)
    X = np.random.random((10, 5))
    y = np.random.random((10, 1))
    models = [example_model(i) for i in range(5, 10)]

    e = ThreadPoolExecutor(4)
    res_list = [e.submit(model.fit, X, y) for model in models]

    for …
Run Code Online (Sandbox Code Playgroud)

concurrency multithreading python-multithreading keras tensorflow

23
推荐指数
1
解决办法
8534
查看次数

如何并行运行几个Keras神经网络

我正在尝试使用Keras来运行强化学习算法.在这个算法中,我正在训练一个神经网络.与其他学习问题的不同之处在于,我需要使用神经网络本身来生成训练数据,并在更新后重复此操作.当我试图并行生成训练数据时,我遇到了问题.

问题是我不能告诉Theano在训练时使用GPU,因为它在生成训练数据时也会使用GPU,如果多个进程调用会导致问题.

更重要的是,即使我THEANO_FLAGS='floatX=float32,device=cpu,openmp=True' OMP_NUM_THREADS=4python命令之前写作,我也不会在多线程模式下运行.这不会导致任何错误,但我可以看到只有一个线程在运行.

这是我的代码.它是一个简化版本.

import numpy
from numpy import array
import copy
from time import time
import multiprocessing

from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
from keras.models import model_from_json

def runEpisode(qn):
    # Some codes that need qn.predict
    result = qn.predict(array([[1, 3]])) # That's just for demo

    return ([1, 2], 2) # Generated some training data, (X, Y)

def runMultiEpisode(qn, queue, event, nEpisode): # 'queue' is used to return result. …
Run Code Online (Sandbox Code Playgroud)

theano python-multiprocessing keras

9
推荐指数
0
解决办法
1700
查看次数

/ image/Tensor Tensor上的ValueError("activation_5/Softmax:0",shape =(?,4),dtype = float32)不是此图的元素

我正在构建一个图像处理分类器,这段代码是一个API,用于预测整个代码运行的图像的图像类,除了这一行(pred = model.predict_classes(test_image))这个API是在Django框架中制作的,我正在使用python 2.7

如果我正常运行此代码(没有制作API)它运行完美,这是一个重点

def classify_image(request):
if request.method == 'POST' and request.FILES['test_image']:

    fs = FileSystemStorage()
    fs.save(request.FILES['test_image'].name, request.FILES['test_image'])


    test_image = cv2.imread('media/'+request.FILES['test_image'].name)

    if test_image is not None:
        test_image = cv2.resize(test_image, (128, 128))
        test_image = np.array(test_image)
        test_image = test_image.astype('float32')
        test_image /= 255
        print(test_image.shape)
    else:
        print('image didnt load')

    test_image = np.expand_dims(test_image, axis=0)
    print(test_image)
    print(test_image.shape)

    pred = model.predict_classes(test_image)
    print(pred)

return JsonResponse(pred, safe=False)
Run Code Online (Sandbox Code Playgroud)

python django machine-learning keras tensorflow

6
推荐指数
1
解决办法
3518
查看次数

跨进程共享 tensorflow/keras 模型

我拥有的是一个系统,我从一个模型中连续读取 3-4 个独立过程中的预测。

这是用于强化学习的视频游戏,所以我不能做工人/数据队列

然后我想在更新权重后将操作/奖励发送到中央进程进行学习,所有其他进程也需要更新权重。

我看过 https://www.tensorflow.org/deploy/distributed https://clusterone.com/blog/2017/09/13/distributed-tensorflow-clusterone/

大多数示例在训练是在分布式机器上的情况下做相反的事情。

如何设置任务工作人员,使他们正在运行的任务只是预测步骤而不是训练步骤?

train_step = (
            tf.train.AdamOptimizer(learning_rate)
            .minimize(loss, global_step=global_step)
            )
Run Code Online (Sandbox Code Playgroud)

在我的情况下不起作用,除非我可以在它之外获取数据。

此外,每个进程都是在我的控制之外创建的,因此 tensorflow 无法创建进程。

类似于这个问题: 如何并行运行多个Keras神经网络

但是这个问题没有答案,它基于我的 tensorflow 上的 thaneos。

也与此类似: 在多线程中运行 Keras 模型进行预测

但我的是在单独的进程而不是线程

python keras tensorflow

5
推荐指数
0
解决办法
519
查看次数