考虑以下:
from flask import Flask
from flask_restplus import Api, Resource, fields
app = Flask(__name__)
api = Api(app)
ns = api.namespace('ns')
payload = api.model('Payload', {
'a_str': fields.String(required=True),
'a_date': fields.Date(required=True)
})
@ns.route('/')
class AResource(Resource):
@ns.expect(payload)
def post(self):
pass
Run Code Online (Sandbox Code Playgroud)
如果我发布,{"a_str": 0, "a_date": "2000-01-01"}我会按预期得到 400,因为a_str不是字符串。但是,当我 POST 时,我{"a_str": "str", "a_date": "asd"}没有得到 400。在这里我也想得到 400,因为“asd”不是常见的日期格式。
我查看了Date类文档,发现有format一个parse方法可以检查字符串是否采用通用日期格式。但是,这里似乎没有调用它们。
有没有另一种方法可以做到这一点?目前我正在手动验证日期格式,但似乎 fask restplus 应该能够为我完成。
我无法找到如何在R bookdown中分页.分页符我的意思是一页内的内容显示为一个网站.
默认情况下,每个新部分前面都有一个分页符(如# Chapter 1).所以,如果我运行render_book每个部分就变成一个html文件.但是,如果我有很多小节,那么这些网站会变得很长.
我想在每个小节之前都有分页符(比如## Chapter 1.1).
到目前为止,我尝试添加\newpage,\pagebreak,---------------到.Rmd或仅提供在相同结构的.Rmd文件,我想有他们作为.html文件.无论哪种方式,.html文件总是根据部分创建.
另一个码头工人/烧瓶问题。我在从另一个容器连接到我的 Flask 应用程序时遇到问题docker-compose。
我的dockerfile设置了一个烧瓶应用程序,如:
COPY ./ /app/
WORKDIR /app
RUN find -name "*.pyc" -delete && \
pip3 install -r requirements.txt
EXPOSE 5000
CMD ["python3", "app.py"]
Run Code Online (Sandbox Code Playgroud)
该应用程序在 上运行0.0.0.0:5000,docker-compose.yml如下所示:
version: '3'
services:
app:
build: .
ports:
- "5000:5000"
test:
image: alpine:3.8
Run Code Online (Sandbox Code Playgroud)
现在docker-compose up我可以curl从主机上像:
curl -i http://0.0.0.0:5000
...
200 - ok
Run Code Online (Sandbox Code Playgroud)
但是如果我跳进测试容器,我会得到一个 404:
docker-compose run test sh
# apk --update add curl
# curl -i http://app:5000
...
404 - not found …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 optuna 来搜索超参数空间。
在一个特定场景中,我在具有几个 GPU 的机器上训练模型。模型和批量大小允许我每 1 个 GPU 运行 1 次训练。因此,理想情况下,我希望 optuna 将所有试验分布在可用的 GPU 上,以便在每个 GPU 上始终运行 1 个试验。
在它说的文档中,我应该在一个单独的终端中为每个 GPU 启动一个进程,例如:
CUDA_VISIBLE_DEVICES=0 optuna study optimize foo.py objective --study foo --storage sqlite:///example.db
Run Code Online (Sandbox Code Playgroud)
我想避免这种情况,因为之后整个超参数搜索会在多轮中继续进行。我不想总是为每个 GPU 手动启动一个进程,检查所有进程何时完成,然后开始下一轮。
我看到study.optimize有n_jobs争论。乍一看,这似乎是完美的。
例如我可以这样做:
import optuna
def objective(trial):
# the actual model would be trained here
# the trainer here would need to know which GPU
# it should be using
best_val_loss = trainer(**trial.params)
return best_val_loss
study = optuna.create_study() …Run Code Online (Sandbox Code Playgroud)