我们有一个无服务器框架项目,在单一存储库中包含不同的微服务。该项目的结构如下所示:
project-root/
|-services/
|-service1/
|-handler.py
|-serverless.yml
|-service2/
...
|-serviceN/
...
|-bitbucket-pipelines.yml
Run Code Online (Sandbox Code Playgroud)
如您所见,每个服务都有自己的部署文件(serverless.yml)。
我们只想部署在推送/合并中已修改的服务,并且由于我们使用的是 bitbucket-pipelines,所以我们更喜欢使用其功能来实现此目标。
经过一些研究后,我们发现了changesets可以限制目录中已更改文件的步骤的属性。因此,对于每项服务,我们可以在 bitbucket-pipelines.yml 中添加如下内容:
- step:
name: step1
script:
- echo "Deploy service 1"
- ./deploy service1
condition:
changesets:
includePaths:
# only files directly under service1 directory
- "service1/**"
Run Code Online (Sandbox Code Playgroud)
这看起来是一个完美的匹配,但这种方法的问题是我们必须为存储库中的每个服务编写一个步骤,并且如果我们添加更多服务,我们将不得不添加更多步骤,这会影响可维护性和可读性。
有什么方法可以for使用参数化步骤进行循环,其中输入参数是服务名称?
另一方面,我们可以制作一个自定义脚本来处理条件并让部署本身检测更改。即使我们更喜欢 bitbucket-native 方法,我们也愿意接受其他选择;在脚本中执行此操作的最佳方法是什么?
continuous-integration bitbucket continuous-deployment serverless-framework bitbucket-pipelines
我正在使用print_tensor来查看自定义损失函数中的张量值.但是,这只打印前三个值!像这样:
softmax = [[-0.245408952 -0.0407191925 -0.0813238621]...]
在Tensorflow中,您可以使用tf.Print中的summarize参数来控制它(在我的情况下不适用),但Keras的print_tensor没有这样的参数,那么我该如何改变这种行为呢?
到目前为止,我尝试过:
import numpy
numpy.set_printoptions(threshold=numpy.nan)
人们之前已经讨论过如何基于字典在字符串中进行多次替换(例如,参见)。似乎有一组string.replace基于正则表达式的选项和一组基于正则表达式的选项,还有几个选项。
但是我对取决于字典大小的不同方法的效率感兴趣,我发现这具有非常重要的影响。
my_subs = {'Hello world': 'apple', 'is': 'ship'}
string = 'Hello world! This is nice.'
new_string = my_efficient_method(string, my_subs)
Run Code Online (Sandbox Code Playgroud)
需要明确的是,这个问题不是关于如何进行这些替换,而是关于哪种方法在哪些条件下更有效,以及适用哪些注意事项。特别是,当有很多(>100k)个长字符串(10-20k 个字符)并且字典很大(>80k 对)时,我正在寻找最实用的方法。在这些情况下,基于正则表达式的首选方法性能非常差。
我在 NLP 项目中使用 Torchtext。我的系统中有一个预训练的嵌入,我想使用它。因此,我试过:
my_field.vocab.load_vectors(my_path)
Run Code Online (Sandbox Code Playgroud)
但是,显然,出于某种原因,这仅接受预先接受的嵌入的简短列表的名称。特别是,我收到此错误:
Got string input vector "my_path", but allowed pretrained vectors are ['charngram.100d', 'fasttext.en.300d', ..., 'glove.6B.300d']
Run Code Online (Sandbox Code Playgroud)
我发现了一些有类似问题的人,但到目前为止我能找到的解决方案是“更改 Torchtext 源代码”,如果可能的话,我宁愿避免这种情况。
有没有其他方法可以使用我的预训练嵌入?允许使用另一个西班牙语预训练嵌入的解决方案是可以接受的。
有些人似乎认为不清楚我在说什么。所以,如果标题和最后一个问题还不够:“我需要帮助在 Torchtext 中使用预先训练的西班牙语单词嵌入”。