0%

rclone

Rclone是一款的命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。

支持的主流对象存储:

  • Google Drive
  • Amazon S3
  • Openstack Swift / Rackspace cloud files / Memset Memstore
  • Dropbox
  • Google Cloud Storage
  • Amazon Drive
  • Microsoft One Drive
  • Hubic
  • Backblaze B2
  • Yandex Disk
  • The local filesystem

安装

阅读全文 »

Python标准库中包含了四种队列,分别是queue.Queueasyncio.Queuemultiprocessing.Queuecollections.deque
可见deque是标准库collections中的

Deque队列是由栈或者queue队列生成的(发音是 “deck”,”double-ended queue”的简称)。
Deque 支持线程安全,内存高效添加(append)和弹出(pop),从两端都可以,两个方向的大概开销都是 O(1) 复杂度。

虽然 list 对象也支持类似操作,不过这里优化了定长操作和 pop(0) 和 insert(0, v) 的开销。
它们引起 O(n) 内存移动的操作,改变底层数据表达的大小和位置。

如果 maxlen 没有指定或者是 None ,deques 可以增长到任意长度。
否则,deque就限定到指定最大长度。一旦限定长度的deque满了,当新项加入时,同样数量的项就从另一端弹出。
限定长度deque提供类似Unix filter tail 的功能。它们同样可以用与追踪最近的交换和其他数据池活动。

deque还支持迭代,清洗,len(d), reversed(d), copy.copy(d), copy.deepcopy(d), 成员测试 in 操作符,
和下标引用 d[-1] 。索引存取在两端的复杂度是 O(1), 在中间的复杂度比 O(n) 略低。要快速存取,使用list来替代。

阅读全文 »

Python2 的整数对象 有 PyIntObjectPyLongObject 这两种类型,Python3 只保留了 PyLongObject
这里我们介绍一下python3的PyLongObject

1
2
3
4
5
6
7
8
9
10
Python 3.7.3 (default, Mar 27 2019, 22:11:17

# 类型
>>> a = 45
>>> type(a)
<class 'int'>

# 小整数


PyLongObject

1
2
3
4
5
6
7
8
9
10
11
PyTypeObject PyLong_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0)
"int", /* tp_name , 在python2中是long */
offsetof(PyLongObject, ob_digit), /* tp_basicsize */
sizeof(digit), /* tp_itemsize */
long_dealloc, /* tp_dealloc */
...
long_new, /* tp_new */
PyObject_Del, /* tp_free */
};

我们可以看到,PyLong_Type类型对象的tp_name就是int,也就是说,在Python内部,它就是int类型。

阅读全文 »

Python 字典

Dictionary object implementation using a hash table ,通过描述可知,python 的字典就是实现了一个 hash 表。

Python 字典概述

在 python 的字典中,一个键值对的对应保存就是 PyDictEntry 类型来保存;

源文件:Include/dict-common.h

阅读全文 »

List跟Java的ArrayList、STL中的vector相似。

在Python中的list可以存放任何类型的数据,查看PyListObject可以发现,list实际存放的是PyObject* 指针

PyListObject

list对象是一个变长对象,在运行时动态调整其所维护的内存和元素,并且支持插入删除等操作,list的定义如下:

1
2
3
4
5
6
7
// listobject.h

typedef struct {
PyVarObject ob_base; // 即 PyObject_VAR_HEAD
PyObject **ob_item; // 数组
Py_ssize_t allocated; // 可容纳元素的总数,0 <= ob_size <= allocated
} PyListObject;
阅读全文 »

背景

dependencies between spatial or temporal local regions.

通常利用卷积(滤波器)等操作,可以实现局部依赖,但是如何获取图像/视频中的长距离依赖?self-attention给我们提供了一个很好的思路,它能捕获任意距离的依赖。

空间Attention

dependencies between any spatial pixels

阅读全文 »

简介

本文介绍了一种新的语言表征模型 BERT——来自 Transformer 的双向编码器表征。与最近的语言表征模型不同,BERT 旨在基于所有层的左、右语境来预训练深度双向表征。BERT 是首个在大批句子层面和 token 层面任务中取得当前最优性能的基于微调的表征模型,其性能超越许多使用任务特定架构的系统,刷新了 11 项 NLP 任务的当前最优性能记录。

相关工作

无监督sequence learning

  • 基于特征的策略
    • (如 ELMo)使用将预训练表征作为额外特征的任务专用架构。
    • 什么意思?
  • 微调策略(finetuning)
    • (如生成预训练 Transformer (OpenAI GPT))引入了任务特定最小参数(pretrain model之外的参数很少),通过简单地微调
      预训练参数在下游任务中进行训练。
阅读全文 »

QRNN 是 Salesforce Research 团队(Update: 官方pytorch实现)提出的一种使用卷积操作替代传统的循环结构(vanilla RNN, LSTM, GRU)的新网络结构。
QRNN 可以视为介于 RNN 和 CNN 之间的特殊结构。
由于卷积操作没有循环结构时间上的依赖性,因此,QRNN 的计算并行度高;在训练时,卷积结构也要比循环结构更稳定。因此 ,QRNN 是一种潜在有用的网络,可以 drop-in 地替代各种 RNN。

motivation

RNN 在计算时,有时间的依赖性,并行度受限;而 CNN 受制于有限的 receptive field,因此,信息传递太慢。QRNN 希望能综合RNN和CNN的优点,尽量避免各自的缺陷。

model

$$
\mathbf{Z} = \tanh(\mathbf{W} _ z * \mathbf{X})
$$

阅读全文 »