我有一个使用 Pyro4 的客户端-服务器设计,其中客户端代码如下:
import Pyro4
uri = 'PYRO:PYRO_SERVER@123.123.123.123:10000
test_1 = Pyro4.Proxy(uri)
test_1.run_model()
服务器端代码如下:
import Pyro4
import socket
from keras.models import Sequential
from keras.layers import LSTM
import tensorflow as tf
@Pyro4.expose
class PyroServer(object):
def run_model(self):
session = tf.Session()
session.run(tf.global_variables_initializer())
session.run(tf.local_variables_initializer())
session.run(tf.tables_initializer())
session.run(tf.variables_initializer([]))
tf.reset_default_graph()
model = Sequential()
model.add(LSTM(25, input_shape=(5, 10)))
host_name = socket.gethostbyname(socket.getfqdn())
daemon = Pyro4.Daemon(host = host_name,port = 10000)
uri = daemon.register(PyroServer,objectId = 'PYRO_SERVER')
daemon.requestLoop()
服务器启动后,客户端对 run_model() 方法的第一次调用正常运行。对于第二次和所有后续调用,将显示以下错误消息:
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Pyro4/core.py”,第 187 行,调用
return self.__send(self.__name, args, kwargs)
_pyroInvoke raise data 中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Pyro4/core.py”,第 472 行,
如果您在回溯中看到这个,您应该可能还要检查远程回溯
ValueError: Fetch 参数不能被解释为张量。(操作名称:“lstm_1/init”
op:“NoOp”
输入:“^lstm_1/kernel/Assign”
输入:“^lstm_1/recurrent_kernel/Assign”
输入:“^lstm_1/bias/Assign”
不是这个的元素图形。)
任何人都可以为此提出一个可能的解决方案吗?