小编wln*_*ana的帖子

为什么扩张的卷积可以保持分辨率?

在此输入图像描述

动画来自这里.我想知道为什么要求扩张卷积保持分辨率.显然,蓝色输入为7x7,绿色输出为3x3.

编辑:

解决分辨率损失的一种方法是将输入填充大约当前感受区域大小的一半,但是

  1. 这基本上破坏了扩张卷积不会失去分辨率的说法,因为它是保留决议的填充物.为了使输入具有相同的输出大小,传统的卷积需要更少的填充.
  2. 由于填充以指数方式增长,相对不小的膨胀因子将导致严重填充的输入图像.想象一下1024x1024输入,10倍扩张,它将变成大约2048x2048(如果我错了,请告诉我).这是原始尺寸的4倍,这意味着大多数卷积都是在填充区域而不是实际输入上完成的.就个人而言,这对我来说似乎是违反直觉的.

machine-learning convolution computer-vision

7
推荐指数
1
解决办法
2643
查看次数

java.lang 的正式规范在哪里?

有 JLS(和 JVMS)定义了“核心”java。还有很多 JSR 扩展了它的功能。但是是否有 Java 标准库的规范,例如java.lang

我发现最接近的是Java™ Platform, Standard Edition 8 API Specification,但感觉更像是文档而不是规范。这个文档是 Java 标准库 API 的官方规范吗?oracle 以外的供应商(如 AdoptOpenJdk 等)是否阅读了这个类似文档的规范并实现了他们的 JRE 版本?或者还有另一个更“正式/官方”的规范?

java specifications

7
推荐指数
1
解决办法
117
查看次数

为什么在gcc手册页的grep中出现“无法换行”警告?

我试图找到以-s以下命令结尾的行,但收到警告:

$ man gcc | grep '\-s$'
<standard input>:4808: warning [p 54, 13.2i]: can't break line
$ man gcc | egrep '\-s$'
<standard input>:4808: warning [p 54, 13.2i]: can't break line
Run Code Online (Sandbox Code Playgroud)

下面是我的开发环境:

$ uname -a
Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u1 (2015-12-14) x86_64 GNU/Linux

$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or …
Run Code Online (Sandbox Code Playgroud)

grep gcc manpage

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

为什么(begin)在Scheme中有效?

我在 Racket 和 Chez Scheme 中进行了测试,发现(begin)可以接受,但(define a (begin))不能。例如我得到的 Racket

> (begin)
> (define a (begin))
; stdin:56:10: begin: empty form not allowed
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么(begin)允许?这有什么具体的原因/直觉吗?

scheme racket

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

Why are CSS named grid areas not in quotes?

According to the spec, the value for grid-area is grid-line, which further uses custom-ident. Then MDN states that identifies cannot be put between quotes, which will make it a string value, which by itself is reasonable.

But adding these all up, named grid areas must be accessed via an ID without quotes. See the comparison in the example below:

.grid {
    display:grid;
    grid: "a b" 1fr "c d" 1fr / 1fr 1fr;
}

.foo {
/* this works …
Run Code Online (Sandbox Code Playgroud)

css w3c specifications language-lawyer css-grid

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

Vim换行:如何在换行时自动插入反斜杠'\'?

假设我:set tw=5在包装以下'long'行时:

a = b + c
Run Code Online (Sandbox Code Playgroud)

它成为了:

a = b
+ c
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

a = b \
+ c
Run Code Online (Sandbox Code Playgroud)

如果在下一行之前插入智能缩进,甚至更好,如下所示:

a = b \
  + c
Run Code Online (Sandbox Code Playgroud)

怎么做?

vim indentation

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

Django的get_or_create方法没有返回确切的对象

这是我的models.py

class Foo(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

在Django中manage.py shell

>>> a,b = Foo.objects.get_or_create(name='hi')
>>> b
True
>>> vars(a)
{'_state': <django.db.models.base.ModelState object at 0x02761390>, 'id': None,
'name': 'hi'}
Run Code Online (Sandbox Code Playgroud)

这里的问题是定制id属性没有价值。如果我继续执行以下操作:

>>> c = foo.objects.get(name='hi')
>>> c.id
1
>>> a is c
False
Run Code Online (Sandbox Code Playgroud)

因此,新创建的对象(由表示c)已经存在,但b并没有像现在这样精确地引用它c

这是错误吗?我的Django版本是1.6.5。

django django-models

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

Scrapy:收集重试消息

爬行器有一个最大化次数,如此处所述.达到该目标后,我收到类似于以下内容的错误:

Gave up retrying <GET https:/foo/bar/123> (failed 3 times)

我相信消息是由代码产生在这里.

但是,我想做一些关于放弃的事情.具体来说,我想知道是否有可能:

  1. 提取123URL 的部分(ID)并将这些ID正确地写入单独的文件中.
  2. 访问meta原始信息request.本文档可能会有所帮助.

python scrapy scrapy-spider

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

什么是"ld -Ttext"选项呢?

我正在按照这个半完成的教程来开发一个简单的操作系统.一步(第50页)是使用编译一个简单的内核$ld -o kernel.bin -Ttext 0x1000 kernel.o --oformat binary.但是我真的不明白选项-Ttext在做什么.

为了使问题具体化,为什么在以下实验中md5s为kernel_1000.bin&kernel.binequal,kernel_1001.bin&kernel_1009.binequal和kernel_1007.bin&kernel_1017.binequal,而所有其他对不相等?

我的实验

我尝试编译几个不同的内核,-Ttext如下所示Makefile:

...
kernel.o: kernel.c
    gcc -ffreestanding -c kernel.c

kernel.bin: kernel.o
    ld -o $@ kernel.o --oformat binary

kernel_1000.bin: kernel.o
    ld -o $@ -Ttext 0x1000 kernel.o --oformat binary

kernel_1001.bin: kernel.o
    ld -o $@ -Ttext 0x1001 kernel.o --oformat binary
...
Run Code Online (Sandbox Code Playgroud)

然后我检查了他们的md5:

$ ls *.bin | xargs md5sum
d9248440a2c816e41527686cdb5118e4  kernel_1000.bin
65db5ab465301da1176b523dec387a40  kernel_1001.bin …
Run Code Online (Sandbox Code Playgroud)

linker kernel ld

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

对不适合作为新类提取的私有方法进行单元测试的好方法是什么?

粗略地说,我有一个实现只有一个公共方法的线程的类run.该方法进入一个循环,就像调度程序一个接一个地处理网络消息; 如下:

class WorkerThread {

  public:

    void run() {
      while (!b_shutdown) {
        message = getNextMessage();
        switch(message.type) {
          case WRITE:
            write();
          case READ:
            read();
          // ...
          // more cases to handle
        }
      }
    }


  private:

    void write() { /* logic to test */ }
    void read() { /* logic to test */ }
    // more private methods with logic that needs testing

    // some member variables
};
Run Code Online (Sandbox Code Playgroud)

所以重点是我真的不想

  1. 将私有方法提取到另一个类,因为在语义上它们是其中的一部分WorkerThread.
  2. 使方法公开,因为它们不在类之外的任何地方使用.
  3. 跳过测试,因为它是那些实现主逻辑的方法.

但是,如何优雅地测试私有方法呢?

注意:

  1. 可能还需要一些公共方法来处理线程的启动和终止,但这不是问题所在.
  2. 我认为这个问题并不局限于此c++,所以我用更流行的静态类型标记它 …

c++ tdd unit-testing design-patterns

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