我已从 tornado 4.2 转移到 tornado 6.0.3,出现错误
AttributeError: 模块 'tornado.web' 没有属性 'asynchronous'
根据tornado v6 中的讨论,似乎已经删除了 tornado.web.asynchronous 协程。在代码中解决这个问题的任何不同方法?
我把@tornado.web.asynchronous 改成@tornado.gen.coroutine,那是固定的,接下来我得到了
运行时错误:完成()后无法写入()
根据运行时错误:在完成()之后无法写入()。可能是由于使用没有 @asynchronous 装饰器的异步操作引起的
我在 write() 之后有 self.finish(),没有错误,但没有得到任何输出
这是我的代码
class MyHandler(RequestHandler):
_thread_pool = ThreadPoolExecutor(max_workers=10)
@tornado.gen.coroutine
def post(self):
try:
data = tornado.escape.json_decode(self.request.body)
self.predict('mod1')
except Exception:
self.respond('server_error', 500)
@concurrent.run_on_executor(executor='_thread_pool')
def _b_run(self, mod, X):
results = do some calculation
return results
@gen.coroutine
def predict(self, mod):
model = mod (load from database)
values = (load from database)
results = yield self._b_run(model, values) …
Run Code Online (Sandbox Code Playgroud) 我有烧瓶应用程序在 Windows 的女服务员中服务,我有记录器信息
\napp = Flask(__name__)\nlogging.basicConfig(level=logging.ERROR)\n\n@app.route('/run', methods=['POST'])\ndef RunFunction():\n \xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6codes...\xe2\x80\xa6\xe2\x80\xa6..\n app.logger.info("Log 1: Starting App on Port: {}".format(LISTEN_PORT))\n \xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6...\n
Run Code Online (Sandbox Code Playgroud)\n如果我用烧瓶运行,我会得到记录器信息
\nif __name__ == '__main__': \n app.run(debug=True,port=8080, threaded=True,use_reloader=False)\n
Run Code Online (Sandbox Code Playgroud)\n如果我用在女服务员身上
\nfrom waitress import serve\nserve(app, host='0.0.0.0', threads=WAITRESS_THREADS, port=LISTEN_PORT)\n
Run Code Online (Sandbox Code Playgroud)\n我没有在控制台中获取记录器信息
\n我试过
\napp = Flask(__name__)\nlogger = logging.getLogger('waitress')\nlogger.setLevel(logging.ERROR)\n
Run Code Online (Sandbox Code Playgroud)\n和记录器代码为
\nlogger.info("Log 1: Starting App on Port: {}".format(LISTEN_PORT))\n
Run Code Online (Sandbox Code Playgroud)\n这不起作用
\n我也尝试过
\nfrom paste.translogger import TransLogger \nserve(TransLogger(app, setup_console_handler=True), host='0.0.0.0', threads=WAITRESS_THREADS, port=LISTEN_PORT)\n
Run Code Online (Sandbox Code Playgroud)\n这也不起作用,我可以知道如何在女服务员中获取记录器信息吗
\n如何设置显示的图像尺寸?在 VSCode Jupyter 交互窗口中运行
from PIL import Image
from IPython.display import display
display(Image.open('imageURL'))
Run Code Online (Sandbox Code Playgroud)
此代码按原样显示图像,即显示原始大小,
尝试过这个,它有效,但是如何保持比例,图像按原样缩小
image = Image.open('imageURL')
image = image.resize((500,500),Image.ANTIALIAS)
display(image)
Run Code Online (Sandbox Code Playgroud) 如何使用自定义函数创建 sklearn 管道?\n我有两个函数,一个用于清理数据,第二个用于构建模型。
\n\ndef preprocess(df):\n \xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6.\n # clean data\n return df_clean\n\ndef model(df_clean):\n \xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\n #split data train and test and build randomForest Model\n return model\n
Run Code Online (Sandbox Code Playgroud)\n\n所以我使用 FunctionTransformer 并创建了管道
\n\nfrom sklearn.pipeline import Pipeline, make_pipeline\nfrom sklearn.preprocessing import FunctionTransformer\n\npipe = Pipeline([("preprocess", FunctionTransformer(preprocess)),("model",FunctionTransformer(model))])\n\npred = pipe.predict_proba(new_test_data)\nprint(pred)\n
Run Code Online (Sandbox Code Playgroud)\n\n我知道上面是错误的,不知道如何处理,在管道中我需要先传递训练数据,然后我必须传递 new_test_data ?
\n假设我有两个 pandas 数据框
data1 = [[s1, 0], [s2, 0], [s3, 1], [s4, 1], [s5, 0], [s6, 1], [s7, 0], [s8, 1]]
df1 = pd.DataFrame(data1, columns = ['s_no', 'values'])
data2 = [[s1, 0], [s2, 1], [s3, 1], [s4, 0], [s5, 0], [s6, 1], [s7, 1], [s8, 0]]
df2 = pd.DataFrame(data2, columns = ['s_no2', 'values2'])
Run Code Online (Sandbox Code Playgroud)
如何找到 value_counts
df2['values2'].value_counts() when df1['values'] == 1 and
df2['values2'].value_counts() when df1['values'] == 0
Run Code Online (Sandbox Code Playgroud) 我有一个 keras 模型(Windows Spyder IDE)并保存用于张量流服务,并按照https://www.youtube.com/watch?v=CUpUPY5g8NE中的步骤进行部署。
我正在使用 docker-for-windows 并运行 Windows 容器(因此 docker 中没有共享驱动器设置)
我拉了 TF 服务并使用参数运行 docker
> docker pull tensorflow/serving
> docker run -t --rm -d -p 8500:8500 -p 8501:8501 --name tf_model --mount type=bind,source=$LOCALMODELDIR/tf_model,target=/models/mymodel --mount type=bind,source=$LOCALMODELDIR/models.config,target=/models/models.config -e MODEL_NAME=mymodel tensorflow/serving --model_config_file=/models/models.config
Run Code Online (Sandbox Code Playgroud)
我跑到 docker 中的错误为
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid mount config for type "bind": source path must be a directory.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
Run Code Online (Sandbox Code Playgroud)
我可以知道任何修复吗?
我有一个熊猫数据框
data = [[0, 10, 22000, 3],
[1, 15, 42135, 4],
[0, 14, 13526, 5],
[0, 16, 32156, 3],
[1, 23, 13889, 5],
[0, 18, 18000, 6],
[0, 21, 13189, 2],
[1, 32, 58766, 2]]
df = pd.DataFrame(data, columns = ['Gender', 'Age', 'Amount','Dependents'])
Run Code Online (Sandbox Code Playgroud)
我有一个numpy数组
arr = numpy.array([[1, 15, 42135, 4],
[1, 23, 13889, 5],
[0, 21, 13189, 2]])
Run Code Online (Sandbox Code Playgroud)
在这里,我想在数据框'data'中创建一个新列(比如说'Good_Bad'),如果数组存在于数据中。
结果应该像
data = [[0, 10, 22000, 3, 0],
[1, 15, 42135, 4, 1],
[0, 14, 13526, 5, 0],
[0, 16, 32156, …
Run Code Online (Sandbox Code Playgroud) 我有一个 pandas df,我需要压平系列列
data = pd.DataFrame([['TRAN',[{'Name':'Ben','Age':'24'}],'T','Good'],
['LMI',[{'Name':'Zoe','Age':'32'}],'U','Better'],
['ARN',[{'Name':'Jack','Age':'28'}],'V','Best']
],
columns=['Type', 'Applicant', 'Decision', 'Action'])
Run Code Online (Sandbox Code Playgroud)
数据是 pandas 数据框,申请人列是一个系列,
#data
type(data)
Out[25]: pandas.core.frame.DataFrame
#Applicant Column
type(data.Applicant)
Out[26]: pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)
我需要展平该系列并将列名称转换为'Type'
, 'Applicant.Name'
, 'Applicant.Age'
, 'Decision'
,的数据框'Action'
。
我有一个函数,它调用另一个方法并返回3个值,我必须将其存储在dict中,当回调相同的函数时,我必须检查dict是否已将相同的值存储在dict中,如果它是必须返回该值,否则加载新的一组值。
IDS = {}
def get_ids(id):
if id in IDS:
return IDS[id], IDS[name], IDS[salary]
else:
id, name, salary = load_ids(id)
IDS['id'] = id
IDS['name'] = name
IDS['salary'] = salary
return id, name, salary
Run Code Online (Sandbox Code Playgroud)
在这里,我要替换第一个存储的ID,但是我必须用新ID添加新值,load_ids进行一些计算并返回一些值
Python,我已将模型保存为 joblib 文件在某个位置,我在“rb”读取字节中打开文件,是否可以直接转换为字节而不是保存在文件中,
\n\nimport joblib\njoblib.dump(model, 'model.joblib')\n#Read as bytes\nmodel_bytes = open('C:/Models/model.joblib','rb').read()\nmodel_bytes\n#This outputs like \nb'\\x80\\x03csklearn.ensemble.forest\\nRandomForestClassifier\\nq\\x00)\\x81q\\x01}q\\x...\xe2\x80\xa6..\n
Run Code Online (Sandbox Code Playgroud)\n\n在这里我不想保存在某个位置,所以我尝试使用临时文件,但这不起作用我知道,还有其他选择吗
\n\nimport tempfile\nbytes_model = tempfile.TemporaryFile()\nbytes_model.read(model)\n\n#Also bytes function doesn't work\nbytes_model = bytes(model)\n
Run Code Online (Sandbox Code Playgroud)\n\n我不需要创建文件,因此我不必访问它,\n是否可以将模型变量读取为字节?
\n我在 docker-for-windows Linux 容器中拉取 tensorflow/serving
PS C:\WINDOWS\system32> docker pull tensorflow/serving
Using default tag: latest
latest: Pulling from tensorflow/serving
Digest: sha256:f7e59a29cbc17a6b507751cddde37bccad4407c05ebf2c13b8e6ccb7d2e9affb
Status: Image is up to date for tensorflow/serving:latest
docker.io/tensorflow/serving:latest
Run Code Online (Sandbox Code Playgroud)
之后,对于任何以下命令,容器都没有列出
PS C:\WINDOWS\system32> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\WINDOWS\system32> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\WINDOWS\system32> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Run Code Online (Sandbox Code Playgroud)
我也尝试重新启动 docker,请问如何解决?
docker docker-image tensorflow tensorflow-serving docker-for-windows
python ×8
pandas ×3
docker ×2
tensorflow ×2
bytesio ×1
dataframe ×1
docker-image ×1
flask ×1
io ×1
ipython ×1
joblib ×1
logging ×1
numpy ×1
pickle ×1
pipeline ×1
python-3.x ×1
scikit-learn ×1
tornado ×1
waitress ×1