Делайте прогнозы в TensorFlow NN, используя потоки Python - PullRequest
0 голосов
/ 30 ноября 2019

Мне нужно делать прогнозы на основе команд, отправляемых сокетами с клиента на сервер. Сервер делает прогнозы (нейронная сеть TensorFlow) и отправляет его другому программному обеспечению, на котором работает симулированный робот. Итак, прогнозы делаются, пока сервер получает данные. Я создал один поток для расчета прогнозов, а другой - для отправки программному обеспечению робота. Я пробовал использовать приведенный ниже код, но он не работает.

def pioneer():
sensor_val = np.array([])
for x in range(1, 16 + 1):
    errorCode, detectionState, detectedPoint, detectedObjectHandle, detectedSurfaceNormalVector = sim.simxReadProximitySensor(
        clientID, sensor_h[x - 1], sim.simx_opmode_buffer)
    sensor_val = np.append(sensor_val, detectionState)  # get list of values
sensor[:, :] = sensor_val.reshape(1, 16)
errorCode = sim.simxSetJointTargetVelocity(clientID, left_motor_handle, pred[:, 0],
                                            sim.simx_opmode_streaming)
errorCode = sim.simxSetJointTargetVelocity(clientID, right_motor_handle, pred[:, 1],
                                            sim.simx_opmode_streaming)

def prediction():
with tf.compat.v1.Session() as sess:
    sess.run(init)
    loader = tf.compat.v1.train.Saver()
    loader.restore(sess, "output_pioneer")
    pred = sess.run(Y_hat, feed_dict={X: direction_data})
    print(pred)

try:
while True:
    print("Aguardando conexao")
    con, client = tcp.accept()
    print("Conectado por", client)
    sim.simxStartSimulation(clientID, sim.simx_opmode_blocking)
    t1 = threading.Thread(target=pioneer())
    t2 = threading.Thread(target=prediction())
    t1.start()
    t2.start()
    while True:
        msg = con.recv(4096)
        if not msg: break
        direction_data = np.array(pickle.loads(msg)).reshape(1,4)
        print(direction_data)
    print("Finalizando conexão do cliente", client)
    con.close()
    sim.simxStopSimulation(clientID, sim.simx_opmode_blocking)
except KeyboardInterrupt:
pass

Буду очень признателен, если вы поможете мне. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...