小编Pab*_*blo的帖子

在具有多个微服务的 monorepo 中使用 bitbucket 管道进行选择性服务部署

我们有一个无服务器框架项目,在单一存储库中包含不同的微服务。该项目的结构如下所示:

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

9
推荐指数
1
解决办法
1893
查看次数

使用print_tensor在Keras中打印整个张量

我正在使用print_tensor来查看自定义损失函数中的张量值.但是,这只打印前三个值!像这样:

softmax = [[-0.245408952 -0.0407191925 -0.0813238621]...]

在Tensorflow中,您可以使用tf.Print中的summarize参数来控制它(在我的情况下不适用),但Keras的print_tensor没有这样的参数,那么我该如何改变这种行为呢?

到目前为止,我尝试过:

  1. 阅读print_tensor的文档(以及简要的代码),但我找不到任何参数
  2. 非常天真地设置numpy来编写整个数组

import numpy numpy.set_printoptions(threshold=numpy.nan)

python keras tensorflow

5
推荐指数
0
解决办法
697
查看次数

有效地在字符串中进行多次多次替换

人们之前已经讨论过如何基于字典在字符串中进行多次替换(例如,参见)。似乎有一组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 对)时,我正在寻找最实用的方法。在这些情况下,基于正则表达式的首选方法性能非常差。

python text replace

3
推荐指数
1
解决办法
2095
查看次数

在 Torchtext 中使用西班牙语中的预训练嵌入

我在 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 中使用预先训练的西班牙语单词嵌入”。

nlp deep-learning word-embedding pytorch torchtext

0
推荐指数
1
解决办法
2399
查看次数