小编Sum*_*ron的帖子

D3.js v4+:截断文本以适应固定空间

在我们通过 d3 操作的 SVG 中需要文本元素的情况并不少见,例如分类刻度标签。这有点不幸,因为<text>SVG 中的元素不是最好的......渲染的字体大小通常略大于人们认为字体应该占用的大小。例如,如果选择宽度/高度比为 0.6 的等宽字体(例如,如果字体大小为 12px,则字符的宽度应为 7.2px),则元素的计算边界矩形可能为 14.2px x n *8px其中n是字符数。

使问题进一步复杂化的事实是,人们通常使用非等宽字体。

很容易截断一个“太长”的字符串

string.slice(0, numChars-3)+'...'
Run Code Online (Sandbox Code Playgroud)

但是知道适合固定宽度的正确字符数似乎并非易事。

function truncateText(t, text, space) {
  // make sure it is a string
  text = String(text)
  // set text
  t.text(text)
  // get space it takes up
  var rect = t.node().getBoundingClientRect()

  while (Math.max(rect.width, rect.height) > space) {
    text = text.slice(0, text.length - 1)
    t.text(text + '...')
    rect = t.node().getBoundingClientRect()
    if (text.length == 0) break
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的函数需要一个 d3.selection,文本和文本应该适合的空间。通过不断操作 DOM,我们可以得到完美的拟合,但是这在计算上非常昂贵。 …

javascript d3.js

6
推荐指数
1
解决办法
2099
查看次数

如何防止点击拖动?

我正在尝试创建一个具有拖动和单击事件的元素。我已经阅读并尝试了事件修饰符的组合。

但是,无论我尝试什么,当拖动停止时我都会听到一声点击

请注意,在 MWE 中,这是在组件本身上完成的,但在我的实际应用程序中,我使用.native修改器来拖动组件

如何在不点击的情况下拖动?

编辑拖动点击

成分Draggable

<template>
  <div
    @pointerdown="handleDown"
    @pointerup="handleUp"
    @pointercancel="handleUp"
    @click="click = !click;"
    :style="style"
    ref="draggableRoot"
    class="draggable"
  >
    drag me!<br />
    am dragged? {{ drag }}<br />
    am clicked? {{ click }}<br />
  </div>
</template>
<script>
export default {
  computed: {
    style() {
      return {
        left: `${this.x}px`,
        top: `${this.y}px`
      };
    }
  },
  data() {
    return {
      x: 100,
      y: 100,
      left: 0,
      top: 0,
      drag: false,
      click: false
    };
  },
  methods: …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuejs2 vue-events

6
推荐指数
1
解决办法
1万
查看次数

Vuex:具有动态命名空间的 createNamespacedHelpers

在几乎所有关于 vuex 模块注册的指南、教程、帖子等中,如果模块由组件注册,则createNamespacedHelpersexport default组件语句之前导入和定义,例如:

import {createNamespacedHelpers} from 'vuex'
const {mapState} = createNamespacedHelpers('mymod')

import module from '@/store/modules/mymod'

export default {
  beforeCreated() {
    this.$store.registerModule('mymod', module)
  }
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但是如果我们希望模块具有唯一的或用户定义的命名空间怎么办?

import {createNamespacedHelpers} from 'vuex'
import module from '@/store/modules/mymod'

export default {
  props: { namespace: 'mymod' },
  beforeCreated() {
    const ns = this.$options.propData.namespace
    this.$store.registerModule(ns, module)
    const {mapState} = createNamespacedHelpers(ns)
    this.$options.computed = {
      ...mapState(['testVar'])
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为这会起作用,但它没有。

为什么需要这样的东西?因为

export default {
  ...
  computed: {
    ...mapState(this.namespace, ['testVar']), 
    ...
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

不起作用

vue.js vue-component vuex vuejs2 vuex-modules

6
推荐指数
1
解决办法
2897
查看次数

Python 3:RuntimeError:同步对象只能通过继承在进程之间共享

我有一个相当简单的类,类似于:

class Tick:
    def __init__():
        self.val = Value('i', 0)
        self.lock = Lock()

    def tick(self):
        self.lock().acquire()
        try:
            self.val.value = self.val.value  + 1
        finally:
            self.lock.release()

Run Code Online (Sandbox Code Playgroud)

我想将它与星图一起使用:

def mp_tick(a, t):
    t.tick()

tick = Tick()

with Pool(processes=4) as pool:
    pool.starmap(mp_tick, [(i, tick) for i in range(100)]
Run Code Online (Sandbox Code Playgroud)

抛出:

RuntimeError: Synchronized objects should only be shared between processes through inheritance
Run Code Online (Sandbox Code Playgroud)

然而:

RuntimeError: Synchronized objects should only be shared between processes through inheritance
Run Code Online (Sandbox Code Playgroud)

才不是。我知道为什么第二个有效。我不明白为什么第一个失败。

理想情况下,我希望有一个Tick可以传递给多个线程的实例,并Tick处理锁定和设置自己的值。我不希望函数必须假设存在全局变量。

python python-3.x python-multiprocessing

6
推荐指数
0
解决办法
2431
查看次数

TensorFlow 1.10+自定义估算器使用train_and_evaluate提前停止

假设你正在训练的自定义tf.estimator.Estimatortf.estimator.train_and_evaluate在类似的设置使用验证数据集@ simlmx的:

classifier = tf.estimator.Estimator(
    model_fn=model_fn,
    model_dir=model_dir,
    params=params)

train_spec = tf.estimator.TrainSpec(
    input_fn = training_data_input_fn,
)

eval_spec = tf.estimator.EvalSpec(
    input_fn = validation_data_input_fn,
)

tf.estimator.train_and_evaluate(
    classifier,
    train_spec,
    eval_spec
)
Run Code Online (Sandbox Code Playgroud)

通常,当训练数据集的损失继续改善而不是验证数据集时,使用验证数据集来切断训练以防止过度拟合.

目前,tf.estimator.EvalSpec允许用户指定steps评估模型的数量(默认为100).

一个(如果可能不使用tf.contrib函数)如何指定在评估丢失n数量(n * steps)之后终止训练,其中评估损失没有改善,然后将"最佳"模型/检查点(由验证数据集确定)保存到唯一文件名(例如best_validation.checkpoint)

python tensorflow tensorflow-estimator

5
推荐指数
1
解决办法
2180
查看次数

TensorFlow ExportOutputs、PredictOuput 和指定 signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY

语境

我有一个带有非常简单演示的colabEstimator目的是学习/理解EstimatorAPI,目的是为即插即用模型制定一个约定,其中包含有用的交易技巧(例如,如果验证通过,则提前停止)设置停止改进,导出模型等)。

这三个的Estimator模式(TRAINEVAL,和PREDICT)返回EstimatorSpec

根据文档

__new__(
    cls,
    mode,
    predictions=None,          # required by PREDICT
    loss=None,                 # required by TRAIN and EVAL
    train_op=None,             # required by TRAIN
    eval_metric_ops=None,
    export_outputs=None,
    training_chief_hooks=None,
    training_hooks=None,
    scaffold=None,
    evaluation_hooks=None,
    prediction_hooks=None.     
)
Run Code Online (Sandbox Code Playgroud)

在这些命名参数中,我想提请注意predictionsexport_outputs,它们在文档中被描述为:

  • predictions:预测张量或张量的字典。
  • export_outputs:描述要导出到SavedModel并在服务期间使用的输出签名。一个字典{name: output},其中:
    • name:此输出的任意名称。
    • output: 一个ExportOutput对象,例如ClassificationOutput, RegressionOutput, 或PredictOutput。单头模型只需要在这个字典中指定一个条目。多头模型应该为每个头指定一个条目,其中之一必须使用 …

python tensorflow tensorflow-serving tensorflow-estimator

5
推荐指数
1
解决办法
1074
查看次数

使用 Docker 部署 Nuxt,环境变量未注册和意外的 API 调用?

我正在重新阅读有关环境变量的文档,但有点困惑。

MWE 仓库:https : //gitlab.com/SumNeuron/docker-nf

我做了一个插件 /plugins/axios.js 来创建一个自定义的 axios 实例:

import axios from 'axios'

const apiVersion = 'v0'
const api = axios.create({
  baseURL: `${process.env.PUBLIC_API_URL}/api/${apiVersion}/`
})

export default api
Run Code Online (Sandbox Code Playgroud)

并相应地将其添加到 nuxt.config.js

import colors from 'vuetify/es5/util/colors'

import bodyParser from 'body-parser'
import session from 'express-session'
console.log(process.env.PUBLIC_API_URL)
export default {
  mode: 'spa',
  env: {
    PUBLIC_API_URL: process.env.PUBLIC_API_URL || 'http://localhost:6091'
  },
  //  ...
   plugins: [
   //...
   '@/plugins/axios.js'
  ]
}
Run Code Online (Sandbox Code Playgroud)

我在文件中设置PUBLIC_API_URL为。奇怪的是,日志语句是正确的(端口),但是当尝试访问该站点时,有一个对端口的 api 调用(后备)http://localhost:9061.env90616091

系统设置

project/
|-- backend (flask …
Run Code Online (Sandbox Code Playgroud)

node.js docker docker-compose axios nuxt.js

5
推荐指数
1
解决办法
3787
查看次数

Python3.8+ 测试一个 yaml 是否是另一个 yaml 的子集

简而言之,我使用 Yaml 文件作为我正在使用的某些管道/函数的参数配置。在Python中,这是一个嵌套字典,参数本身可以是数组/字典。迭代所有配置文件并搜索指定的值子集将很有帮助,例如

# toy example of all parameters a config file might have
- param_a: 1
- param_b: 
  - b1: 'a'
  - b2: [1,2,3]
Run Code Online (Sandbox Code Playgroud)
# want all configs with these values
- param_a: 1
- param_b: 
  - b2: [1,2,3]
Run Code Online (Sandbox Code Playgroud)

当然,可以对每个嵌套字典进行递归,但我想知道是否有一个经过验证的真实解决方案,而不是重新发明轮子。

我看到了一些相关的问题(希望确认相同的词典)并且弹出Deep Diff 。然而,尚不清楚在测试子集时,DeepDiff 是否会返回所有丢失的键。想法?

现在我正在使用它并假设 yaml 已作为嵌套字典正确加载

def is_config_subset(truth, params):
    '''
    Arguments:
    ----------
        truth (dict): dictionary of parameters to compare to
        params (dict): dictionary of parameters to test
    Returns:
    ----------
        result (bool) whether or not `params` is …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

5
推荐指数
1
解决办法
232
查看次数

Python 3.5:切片与 islice 与替代品?效率对比

语境

这是一个关于效率的一般问题。我有一个列表,我需要一个列表中的连续运行/子列表。通常,这是通过切片完成的:

my_list[start:end]
Run Code Online (Sandbox Code Playgroud)

但是, slice 生成原始列表的副本(至少是原始列表的引用)。因此,此操作可能比不执行此操作要慢。

islice是替代迭代器的替代方法。由于我只关心将所有值放在一个位置,而不是遍历它们,因此我将不得不进行类型转换:

list(islice(my_list, start, end))
Run Code Online (Sandbox Code Playgroud)

背景工作

为了进行一些比较,我将大小从 1 增加到 10,000 的列表随机切片/切片 10 次:

is_vals = []
s_vals = []
for l in range(1, 10000):

    my_list = [random.random() for k in range(l)]

    for p in range(10):
        i = random.randint(0, l)
        j = random.randint(0, l)

        if i < j:

            start_time = time.clock()
            list(islice(my_list, i, j))
            is_vals.append(time.clock() - start_time)
            start_time = time.clock()
            my_list[i:j]
            s_vals.append(time.clock() - start_time)

        else:
            start_time = time.clock()
            list(islice(my_list, j, i))
            is_vals.append(time.clock() - start_time)
            start_time …
Run Code Online (Sandbox Code Playgroud)

python list slice

4
推荐指数
1
解决办法
2762
查看次数

MXNet(python3)将残余卷积结构定义为来自Gluon模块的Block

注意:

我是MXNet的新手。

看来该Gluon模块是要替换(?)Symbol作为高级神经网络(nn)接口的模块。因此这个问题专门利用Gluon模块寻求答案。

语境

残差神经网络(res-NNs)是相当流行的体系结构(该链接提供了对res-NNs的回顾)。简而言之,res-NN是一种架构,其中输入经历(一系列)转换(例如,通过标准nn层),最后在激活功能之前将其与纯净的自身组合:

神经网络

因此,这里的主要问题是“如何使用自定义实现res-NN结构gluon.Block?” 以下是:

  1. 我的尝试(不完整,可能有错误)
  2. 作为子问题突出显示为整体问题。

通常,子问题被视为并发主要问题,导致帖子被标记为过于笼统。在这种情况下,它们是合法的子问题,因为我无法解决我的主要问题是由这些子问题引起的,并且胶子模块的部分/初稿文档不足以回答这些问题。

主要问题

“如何通过自定义实现res-NN结构gluon.Block?”

首先让我们进行一些导入:

import mxnet as mx
import numpy as np
import math
import random
gpu_device=mx.gpu()
ctx = gpu_device
Run Code Online (Sandbox Code Playgroud)

在定义res-NN结构之前,首先我们定义一个通用的卷积NN(cnn)架构;即卷积?批处理规范。?坡道。

class CNN1D(mx.gluon.Block):
    def __init__(self, channels, kernel, stride=1, padding=0, **kwargs):
        super(CNN1D, self).__init__(**kwargs) 
        with self.name_scope():
            self.conv = mx.gluon.nn.Conv1D(channels=channels, kernel_size=kernel, strides=1, padding=padding)      
            self.bn = mx.gluon.nn.BatchNorm()
            self.ramp = mx.gluon.nn.Activation(activation='relu')

    def forward(self, x):
        x = self.conv(x) …
Run Code Online (Sandbox Code Playgroud)

python-3.x mxnet

4
推荐指数
1
解决办法
286
查看次数