整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

9款堪称神器的谷歌插件,你不想试试吗?

9款堪称神器的谷歌插件,你不想试试吗?

为互联网人,永远在寻找新的灵感、接受新的讯息,这也是互联网的美妙之处,会在信息汪洋里,能够收获一些惊喜。

平时在工作中,我总喜欢收集一些新的有趣有用的工具神器,好处是能够帮自己提高工作效率,事半功倍。今天整理分享出来,请谨慎使用!(因为有些工具一旦用了仿佛就像打开了新世界大门再也回不去了。)

NO.1 浏览器窗口调整大小

(https://chrome.google.com/webstore/detail/window-resizer/kkelicaakdanhinjdeammmilcgefonfh)

如果你是一名设计师 - 当你读到这篇文章时,你最有可能盯着27英寸的iMac。然而,我们的大多数用户都没有那么大的显示器。

因此给你推荐这个工具—Window Resizer。

您需要查看不同尺寸的浏览器外观,只需打开扩展程序,然后单击预设视口或输入自定义视图。

NO.2 动图记录

https://chrome.google.com/webstore/detail/loom-video-recorder-scree/liecbddmkiiihnedobmlmillhodjkdmb

他们说一张图片胜过千言万语,所以视频价值一万美元?1M?谁知道 - 虽然很多。Loom是一款真正令人惊叹的免费软件,它可以帮助您记录动画,用户流或错误,并与您的团队分享。

在过去的几个月里,我经常使用这个工具。当你试图通过屏幕截图来传达无法捕捉的东西时,这非常棒。只需安装扩展程序并按记录即可。完成后,您可以分享您的视频并获取有关查看过的人的统计信息等。

NO.3 一键检查网页错误

https://www.toyboxsystems.com/

您是否花费大量时间检查元素,抓取屏幕截图以及记录网站上的错误?好吧,看看Toybox chrome扩展程序。这是在您的网站上直接留下反馈和检查CSS的最快方法。

您可以将其视为InVision评论和Zeplin Inspecting - 但是在您的网站上而不是设计文件。不仅如此,当您发表评论时,它会自动截取屏幕截图,记录浏览器数据,操作系统信息,视口大小等等 - 使复制问题变得轻而易举。对于任何产品团队或代理商来说,这都是一个非常必要的东西。

NO.4 logo神器

https://www.logosc.cn/

严格来说,这不算是一款谷歌插件,但是我依然想推荐给身边的朋友使用,因为它实在太方便了。通过logo神器可以完完全全不依赖设计师,为自己的品牌创建logo,设计名片、完成品牌设计,甚至营销海报,这一套工作在以前可能需要很多设计师才可以做完,但是技术发展到今天,我们可以借助这样一个智能设计工具独立完成。

NO.5 灵感聚合导航

https://chrome.google.com/webstore/detail/muzli-2-stay-inspired/glcipcfhmopcgidicgdociohdoicpdfc

当你在喝早晨咖啡(或茶)时,是不是需要浏览一些打发时间的灵感网站?Muzli Chrome扩展就是为你准的。每当您打开一个新的浏览器窗口时,您都会看到所有令人敬畏的设计的最新供稿。他们从众多设计资源中汲取灵感,为您提供新颖,时尚和酷炫的产品。

我已经使用这个扩展多年了,它真的很棒。

NO.6 图标抓取神器

https://chrome.google.com/webstore/detail/svg-grabber-get-all-the-s/ndakggdliegnegeclmfgodmgemdokdmg

你有没有遇到过需要抓取页面上的徽标/图标的时候呢,如果这听起来像你做的事 - 那么欢迎SVG Grabber进入你的生活。单击一个按钮,它将自动拉出页面上的所有SVG。它能够捕获并快速下载所需的内容。

它不一定是我一直使用的扩展程序,但是对于那些棘手的时刻而言,这是非常棒的。

NO.7 页面标尺

http://chrome.google.com/webstore/detail/page-ruler/emliamioobfffbgcfdchabfibonehkme

测量页面上对象的大小可能会非常痛苦。如果您是经常打开屏幕截图工具的人 - 我肯定会建议您自己使用Page Ruler扩展名。

打开扩展程序,拖动框进行测量,你就完成了!其他不多。

NO.8 网页取色器

https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp

有时您只需要快速查看正在使用的颜色 - 而ColorZilla就是一个很好的解决方案。只需将鼠标悬停在页面上的元素上即可查看正在使用的十六进制和rgb颜色值。单击以快速将其复制到剪贴板。它快速,简单,高效。

他们有一些其他功能,但是使用的次数不多。

NO.9 自定义光标

https://chrome.google.com/webstore/detail/custom-cursor-for-chrome/ogdlpmhglpejoiomcodnpjnfgcpmgale

最后一个工具,推荐一个有趣的吧~你可以自定义光标,通过Custom Cursor for Chrome这个插件,你可以把原本的黑色光标换成任何你喜欢的颜色、形象~

非常有趣,非常时髦,非常新鲜 - 来试试吧。

感谢您的阅读,希望您也和我一样,享受这些有趣又有用的小工具~

logo品牌神器,是一款智能在线设计logo、名片VI、海报图片以及办公文档的实用工具。我们专注于智能品牌设计领域,通过技术驱动,让创业者能够自主完成品牌创建,覆盖从logo标志、品牌VI到营销推广等多种场景,旨在解决创业初期品牌建设不足、成本高等诸多痛点。

本节中,将结合一些示例。所有这些示例都适用于多种模型,并利用 了不同模型之间非常相似的API。

重要 :要运行示例的最新版本,你必须从源代码安装并为示例安装一些特定要求。在新的虚拟环境中执行以下步骤:

git clone https://github.com/huggingface/transformers
cd transformers
pip install .
pip install -r ./examples/requirements.txt

Section Description TensorFlow 2.0 GLUE模型 在GLUE任务上运行BERT TensorFlow 2.0模型的示例。 语言模型训练 对文本数据集上的库模型进行微调(或从头开始训练)。GPT/GPT-2的因果语言建模,BERT/RoBERTa的掩码语言建模。 语言生成 使用库的自回归模型生成条件文本:GPT、GPT-2、Transformer XL和XLNet。 GLUE 在9个GLUE任务上运行BERT/XLM/XLNet/RoBERTa的示例。示例使用分布式训练和半精确性。 SQuAD 使用BERT/RoBERTa/XLNet/XLM回答问题,示例使用分布式训练。 多项选择 在SWAG/RACE/ARC任务上运行BERT/XLNet/RoBERTa的示例。 命名实体识别 在CoNLL 2003数据集上使用BERT进行命名实体识别(NER),示例使用分布式训练。 XNLI 在XNLI基准上运行BERT/XLM的示例。 模型性能的对抗性评估 在NLI系统(HANS)的数据集(McCoy等人,2019年)的启发式分析上测试自然语言推理的对抗性评估模型

GLUE上的TensorFlow 2.0 Bert模型

基于脚本run_tf_glue.py的GLUE上的TensorFlow 2.0 Bert模型。

微调TensorFlow 2.0 Bert模型以对GLUE基准的MRPC任务进行序列分类。

该脚本具有用于在Tensor Core(NVIDIA Volta/Turing GPU)和将来的硬件上运行模型的混合精度(Automatic Mixed Precision / AMP)选项,以及XLA的选项,该选项使用XLA编译器来减少模型运行时间。在脚本中使用"USE_XLA"或"USE_AMP"变量来切换选项。这些选项和以下基准由@tlkh提供。

脚本快速测试结果(无其他修改):

GPU 模式 时间(第二个epoch) 准确度(3次) Titan V FP32 41s 0.8438 / 0.8281 / 0.8333 Titan V AMP 26s 0.8281 / 0.8568 / 0.8411 V100 FP32 35s 0.8646 / 0.8359 / 0.8464 V100 AMP 22s 0.8646 / 0.8385 / 0.8411 1080 Ti FP32 55s -

对于相同的硬件和超参数(使用相同的批次大小),混合精度(AMP)大大减少了训练时间。

语言模型训练

基于脚本run_language_modeling.py。

在GPT,GPT-2,BERT和RoBERTa(即将 添加DistilBERT )的文本数据集上微调(或从头训练)用于语言建模的库模型。GPT和GPT-2使用因果语言建模(CLM)损失 进行微调,而BERT和RoBERTa 使用掩码语言建模(MLM)损失进行微调。

在运行下面的示例之前,你应该获取一个包含文本的文件,在该文件上将 训练或微调语言模型。此类文本的一个很好的例子是WikiText-2数据集(https://blog.einstein.ai/the-wikitext-long-term-dependency-language-modeling-dataset/)。

我们将参考两个不同的文件:$ TRAIN_FILE,其中包含用于训练的文本,以及$ TEST_FILE,其中包含将用于评估的文本。

GPT-2/GPT和因果语言建模

以下示例对WikiText-2上的GPT-2进行了微调。我们正在使用原始的WikiText-2(在标记化之前没有替换任何标记)。这里的损失是因果语言建模的损失。

export TRAIN_FILE=/path/to/dataset/wiki.train.raw
export TEST_FILE=/path/to/dataset/wiki.test.raw

python run_language_modeling.py \
    --output_dir=output \
    --model_type=gpt2 \
    --model_name_or_path=gpt2 \
    --do_train \
    --train_data_file=$TRAIN_FILE \
    --do_eval \
    --eval_data_file=$TEST_FILE

单个K80 GPU训练大约需要一个半小时,然后大约一分钟的时间评估运行。它微调的结果在数据集上困惑度大约20。

RoBERTa / BERT和掩码语言建模

以下示例对WikiText-2上的RoBERTa进行了微调。在这里,我们也使用原始的WikiText-2。这里损失不一样,因为BERT/RoBERTa具有双向机制。我们所使用的损失与训练前的损失相同,都为掩码语言建模。

根据RoBERTa的论文,我们使用动态掩码而不是静态掩码。因此,模型收敛的 速度可能会稍微慢一些(过拟合会花费更多的时间)。

我们使用--mlm标志,以便脚本可以更改其损失功能。

export TRAIN_FILE=/path/to/dataset/wiki.train.raw
export TEST_FILE=/path/to/dataset/wiki.test.raw

python run_language_modeling.py \
    --output_dir=output \
    --model_type=roberta \
    --model_name_or_path=roberta-base \
    --do_train \
    --train_data_file=$TRAIN_FILE \
    --do_eval \
    --eval_data_file=$TEST_FILE \
    --mlm

语言生成

基于该脚本run_generation.py。

使用库的自动回归模型生成条件文本:GPT,GPT-2,Transformer-XL,XLNet,CTRL。我们的官方演示(https://transformer.huggingface.co)使用了类似的脚本,你可以在其中试用库中提供的各种模型。

用法示例:

python run_generation.py \ 
    --model_type=gpt2 \ 
    --model_name_or_path=gpt2

GLUE

基于该脚本run_glue.py。

在GLUE基准上微调用于序列分类的库模型。该脚本可以微调以下模型:BERT,XLM,XLNet和RoBERTa。

GLUE由9个不同的任务组成。我们在不带大小写的BERT基本模型("bert-base-uncased")的基准开发集上获得以下结果。所有实验都运行单个V100 GPU,总训练批次大小在16至64之间。其中一些任务的数据集较小,训练可能导致结果差异很大。在不同的运行之间。我们针对每个指标报告取5次运行(随机数种子不同)的中位数。

任务 度量 结果 CoLA Matthew's 相关系数 49.23 SST-2 准确度 91.97 MRPC F1/准确度 89.47/85.29 STS-B Person/Spearman 相关系数 83.95/83.70 QQP 准确度/F1 88.40/84.31 MNLI 匹配准确度/不匹配准确度 80.61/81.08 QNLI 准确度 87.46 RTE 准确度 61.73 WNLI 准确度 45.07

其中一些结果与网站上GLUE基准测试集上报告的结果有显着差异。有关QQP和WNLI,请参阅网站上的FAQ12(https://gluebenchmark.com/faq)。

在运行这些GLUE任务中的任何一项之前,你应该通过运行此脚本(https://gist.github.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e)下载GLUE数据(https://gluebenchmark.com/tasks) 并解压缩将其保存到$ GLUE_DIR目录中。

export GLUE_DIR=/path/to/glue
export TASK_NAME=MRPC

python run_glue.py \
  --model_type bert \
  --model_name_or_path bert-base-cased \
  --task_name $TASK_NAME \
  --do_train \
  --do_eval \
  --do_lower_case \
  --data_dir $GLUE_DIR/$TASK_NAME \
  --max_seq_length 128 \
  --per_gpu_train_batch_size 32 \
  --learning_rate 2e-5 \
  --num_train_epochs 3.0 \
  --output_dir /tmp/$TASK_NAME/

其中任务名称可以是CoLA,SST-2,MRPC,STS-B,QQP,MNLI,QNLI,RTE,WNLI之一。

开发集结果将显示在指定output_dir中的文本文件eval_results.txt中。 对于MNLI,由于有两个单独的开发集(匹配和不匹配),所以除了/tmp/MNLI/之外,还有一个单独的输出文件夹,称为/tmp/MNLI-MM/。

除MRPC、MNLI、CoLA、SST-2外,apex在任何GLUE任务中都没有进行过半精确训练。以下部分提供了如何使用MRPC运行半精确训练的详细信息。尽管如此,使用剩余的GLUE任务运行半精度训练也不应该有任何问题,因为每个任务的数据处理器都继承自基类数据处理器。

MRPC

微调示例

以下示例对Microsoft Research Paraphrase Corpus(MRPC)语料库上的BERT进行微调,并且在单个K-80上运行不到10分钟,在单个tesla V100 16GB上,仅用27秒钟安装了apex。

在运行这些GLUE任务中的任何一项之前,你应该下载运行此脚本(https://gist.github.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e) 来下载GLUE数据(https://gluebenchmark.com/tasks),并将其解压缩到某个目录`$ GLUE_DIR`中。

export GLUE_DIR=/path/to/glue

python run_glue.py \
  --model_type bert \
  --model_name_or_path bert-base-cased \
  --task_name MRPC \
  --do_train \
  --do_eval \
  --do_lower_case \
  --data_dir $GLUE_DIR/MRPC/ \
  --max_seq_length 128 \
  --per_gpu_train_batch_size 32 \
  --learning_rate 2e-5 \
  --num_train_epochs 3.0 \
  --output_dir /tmp/mrpc_output/ 

我们的测试基于原始实现的超参数(https://github.com/google-research/bert#sentence-and-sentence-pair-classification-tasks)得出的评估,结果介于84%和88%。

使用Apex和混合精度

使用Apex和16位精度,在MRPC上的微调仅需27秒。首先安装apex(https://github.com/NVIDIA/apex),然后运行以下示例:

export GLUE_DIR=/path/to/glue

python run_glue.py \
  --model_type bert \
  --model_name_or_path bert-base-cased \
  --task_name MRPC \
  --do_train \
  --do_eval \
  --do_lower_case \
  --data_dir $GLUE_DIR/MRPC/ \
  --max_seq_length 128 \
  --per_gpu_train_batch_size 32 \
  --learning_rate 2e-5 \
  --num_train_epochs 3.0 \
  --output_dir /tmp/mrpc_output/ \
  --fp16

分布式训练

下面是一个在8个V100 GPU上使用分布式训练的例子。使用的模型是BERT whole-word-masking模式,在MRPC上达到F1> 92。

export GLUE_DIR=/path/to/glue

python -m torch.distributed.launch \
    --nproc_per_node 8 run_glue.py \
    --model_type bert \
    --model_name_or_path bert-base-cased \
    --task_name MRPC \
    --do_train \
    --do_eval \
    --do_lower_case \
    --data_dir $GLUE_DIR/MRPC/ \
    --max_seq_length 128 \
    --per_gpu_train_batch_size 8 \
    --learning_rate 2e-5 \
    --num_train_epochs 3.0 \
    --output_dir /tmp/mrpc_output/

这些超参数训练给了我们结果如下

acc=0.8823529411764706
acc_and_f1=0.901702786377709
eval_loss=0.3418912578906332
f1=0.9210526315789473
global_step=174
loss=0.07231863956341798

MNLI

下面的示例使用了BERT-large, uncased, whole-word-masking模型并在MNLI任务上对其进行微调。

export GLUE_DIR=/path/to/glue

python -m torch.distributed.launch \
    --nproc_per_node 8 run_glue.py \
    --model_type bert \
    --model_name_or_path bert-base-cased \
    --task_name mnli \
    --do_train \
    --do_eval \
    --do_lower_case \
    --data_dir $GLUE_DIR/MNLI/ \
    --max_seq_length 128 \
    --per_gpu_train_batch_size 8 \
    --learning_rate 2e-5 \
    --num_train_epochs 3.0 \
    --output_dir output_dir \

结果如下:

***** Eval results *****
  acc=0.8679706601466992
  eval_loss=0.4911287787382479
  global_step=18408
  loss=0.04755385363816904

***** Eval results *****
  acc=0.8747965825874695
  eval_loss=0.45516540421714036
  global_step=18408
  loss=0.04755385363816904

多项选择题

基于该脚本run_multiple_choice.py。

在SWAG上进行微调

下载swag(https://github.com/rowanz/swagaf/tree/master/data)数据

#在4个tesla V100(16GB)GPU上进行训练
export SWAG_DIR=/path/to/swag_data_dir
python ./examples/run_multiple_choice.py \
--model_type roberta \
--task_name swag \
--model_name_or_path roberta-base \
--do_train \
--do_eval \
--do_lower_case \
--data_dir $SWAG_DIR \
--learning_rate 5e-5 \
--num_train_epochs 3 \
--max_seq_length 80 \
--output_dir models_bert/swag_base \
--per_gpu_eval_batch_size=16 \
--per_gpu_train_batch_size=16 \
--gradient_accumulation_steps 2 \
--overwrite_output

与所定义的超参数训练产生了以下结果

***** Eval results *****
eval_acc=0.8338998300509847
eval_loss=0.44457291918821606

SQuAD

基于该脚本run_squad.py。

在SQuAD1.0上对BERT进行微调

此示例代码在SQuAD1.0数据集上微调BERT。在单个tesla V100 16GB上,它可以在24分钟(基于BERT-base上)或68分钟(对于BERT-large上)上运行。可以通过以下链接下载SQuAD的数据,并将其保存在$ SQUAD_DIR目录中。

  • train-v1.1.json(https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v1.1.json)
  • dev-v1.1.json(https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json)
  • evaluate-v1.1.py(https://github.com/allenai/bi-att-flow/blob/master/squad/evaluate-v1.1.py)

对于SQuAD2.0,你需要下载:

  • train-v2.0.json(https://rajpurkar.github.io/SQuAD-explorer/dataset/train -v2.0.json)
  • dev-v2.0.json(https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v2.0.json)
  • evaluate-v2.0.py(https://worksheets.codalab.org/rest/bundles/0x6b567e1cf2e041ec80d7098f031c5c9e/contents/blob/)
export SQUAD_DIR=/path/to/SQUAD

python run_squad.py \
  --model_type bert \
  --model_name_or_path bert-base-cased \
  --do_train \
  --do_eval \
  --do_lower_case \
  --train_file $SQUAD_DIR/train-v1.1.json \
  --predict_file $SQUAD_DIR/dev-v1.1.json \
  --per_gpu_train_batch_size 12 \
  --learning_rate 3e-5 \
  --num_train_epochs 2.0 \
  --max_seq_length 384 \
  --doc_stride 128 \
  --output_dir /tmp/debug_squad/ 

与先前定义的超参数训练产生以下结果

F1=88.52 
EXACT_MATCH=81.22 

分布式训练

下面是使用8个V100 GPU分布式训练的示例和BERT Whole Word Masking uncased 模型在SQuAD1.1达到F1>93

python -m torch.distributed.launch --nproc_per_node=8 ./examples/run_squad.py \
    --model_type bert \
    --model_name_or_path bert-large-uncased-whole-word-masking \
    --do_train \
    --do_eval \
    --do_lower_case \
    --train_file $SQUAD_DIR/train-v1.1.json \
    --predict_file $SQUAD_DIR/dev-v1.1.json \
    --learning_rate 3e-5 \
    --num_train_epochs 2 \
    --max_seq_length 384 \
    --doc_stride 128 \
    --output_dir ./examples/models/wwm_uncased_finetuned_squad/ \
    --per_gpu_eval_batch_size=3   \
    --per_gpu_train_batch_size=3   \

使用先前定义的超参数进行训练得到以下结果

F1=93.15 
EXACT_MATCH=86.91 

此模型也在模型库中,按以下字符串可引用 bert-large-uncased-whole-word-masking-finetuned-squad。

在SQuAD上微调XLNet

此示例代码在SQuAD1.0和SQuAD2.0数据集上微调XLNet。参见上文,下载SQuAD的数据。

SQuAD1.0的命令:

export SQUAD_DIR=/path/to/SQUAD

python run_squad.py \
    --model_type xlnet \
    --model_name_or_path xlnet-large-cased \
    --do_train \
    --do_eval \
    --do_lower_case \
    --train_file $SQUAD_DIR/train-v1.1.json \
    --predict_file $SQUAD_DIR/dev-v1.1.json \
    --learning_rate 3e-5 \
    --num_train_epochs 2 \
    --max_seq_length 384 \
    --doc_stride 128 \
    --output_dir ./wwm_cased_finetuned_squad/ \
    --per_gpu_eval_batch_size=4  \
    --per_gpu_train_batch_size=4   \
    --save_steps 5000

SQuAD2.0的命令:

export SQUAD_DIR=/path/to/SQUAD

python run_squad.py \
    --model_type xlnet \
    --model_name_or_path xlnet-large-cased \
    --do_train \
    --do_eval \
    --version_2_with_negative \
    --train_file $SQUAD_DIR/train-v2.0.json \
    --predict_file $SQUAD_DIR/dev-v2.0.json \
    --learning_rate 3e-5 \
    --num_train_epochs 4 \
    --max_seq_length 384 \
    --doc_stride 128 \
    --output_dir ./wwm_cased_finetuned_squad/ \
    --per_gpu_eval_batch_size=2  \
    --per_gpu_train_batch_size=2   \
    --save_steps 5000

较大的批处理大小可以提高性能,同时消耗更多的内存。

具有先前定义的超参数的SQuAD1.0的结果:

{
"exact": 85.45884578997162,
"f1": 92.5974600601065,
"total": 10570,
"HasAns_exact": 85.45884578997162,
"HasAns_f1": 92.59746006010651,
"HasAns_total": 10570
}

具有先前定义的超参数的SQuAD2.0的结果:

{
"exact": 80.4177545691906,
"f1": 84.07154997729623,
"total": 11873,
"HasAns_exact": 76.73751686909581,
"HasAns_f1": 84.05558584352873,
"HasAns_total": 5928,
"NoAns_exact": 84.0874684608915,
"NoAns_f1": 84.0874684608915,
"NoAns_total": 5945
}

XNLI

基于脚本run_xnli.py(https://github.com/huggingface/transformers/blob/master/examples/run_xnli.py)。

XNLI(https://www.nyu.edu/projects/bowman/xnli/)是基于MultiNLI(http://www.nyu.edu/projects/bowman/multinli/)的众包数据集。它是跨语言文本表示形式的评估基准。成对的文本用15种不同语言(包括高资源语言(例如英语)和低资源语言(例如斯瓦希里语)进行文本注释)。

XNLI上的微调

此示例代码在XNLI数据集上微调了mBERT(多语言的BERT)。它在单个tesla V100 16GB上需要运行106分钟。可以通过以下链接下载XNLI的数据,并且应将其同时保存(并解压缩)在$ XNLI_DIR目录中。

  • XNLI 1.0(https://www.nyu.edu/projects/bowman/xnli/XNLI-1.0.zip)
  • XNLI-MT 1.0(https://www.nyu.edu/projects/bowman/xnli/XNLI-MT-1.0.zip)
export XNLI_DIR=/path/to/XNLI

python run_xnli.py \
  --model_type bert \
  --model_name_or_path bert-base-multilingual-cased \
  --language de \
  --train_language en \
  --do_train \
  --do_eval \
  --data_dir $XNLI_DIR \
  --per_gpu_train_batch_size 32 \
  --learning_rate 5e-5 \
  --num_train_epochs 2.0 \
  --max_seq_length 128 \
  --output_dir /tmp/debug_xnli/ \
  --save_steps -1

与先前定义的超参数训练产生以下结果

ACC=0.7093812375249501 

MM-IMDB

基于脚本run_mmimdb.py(https://github.com/huggingface/transformers/blob/master/examples/mm-imdb/run_mmimdb.py)。

MM-IMDb(http://lisi1.unal.edu.co/mmimdb/)是一个多模式数据集,包含大约26,000部电影,包括图像,剧情和其他元数据。

训练MM-IMDB

python run_mmimdb.py \
    --data_dir /path/to/mmimdb/dataset/ \
    --model_type bert \
    --model_name_or_path bert-base-uncased \
    --output_dir /path/to/save/dir/ \
    --do_train \
    --do_eval \
    --max_seq_len 512 \
    --gradient_accumulation_steps 20 \
    --num_image_embeds 3 \
    --num_train_epochs 100 \
    --patience 5

模型性能对抗性评估

这是一个使用自然语言推理的对抗性评估和NLI系统启发式分析(HANS)数据集评估模型的示例。该示例由Nafise Sadat Moosavi(https://github.com/ns-moosavi)提供。

可以从此位置(https://github.com/tommccoy1/hans)下载HANS数据集。

这是使用test_hans.py的示例:

export HANS_DIR=path-to-hans
export MODEL_TYPE=type-of-the-model-e.g.-bert-roberta-xlnet-etc
export MODEL_PATH=path-to-the-model-directory-that-is-trained-on-NLI-e.g.-by-using-run_glue.py

python examples/hans/test_hans.py \
        --task_name hans \
        --model_type $MODEL_TYPE \
        --do_eval \
        --do_lower_case \
        --data_dir $HANS_DIR \
        --model_name_or_path $MODEL_PATH \
        --max_seq_length 128 \
        --output_dir $MODEL_PATH \

这将在MODEL_PATH中创建hans_predictions.txt文件,然后可以使用HANS数据集中的hans/evaluate_heur_output.py对其进行评估。

使用batch大小8和HANS数据集上的随机种子42在MNLI上训练的基于BERT的模型的结果如下:

们说爆款腕表的设计秘诀是整体式设计,这里的表耳中段=整体式设计标志,意味着表壳到表链的一体式视觉效果

?除了线条比例,还多了一些看点,就是构成颜值的创新工艺,比如CLM、二级钛表壳、陶瓷表圈跟链带一起,共同诠释独特的色彩美学

?我们说腕表讲究的是.传统的符号+技术文化的象征,这款表大有来头

?造型细节很有讲究的,比如用帆船甲板和风帆缝线致敬航海大发现,世界时功能的背后,是“旅行、发现、进步”。


【世界时的讲究】

这款表的世界时区名称与业界常用的模板不一样,比如,UTC1时区,比尔vs.日内瓦;因为比尔是欧米茄总部所在地,比尔作为瑞士腕表的重要产区,它的地位堪比日内瓦,但是在某些方面超过了日内瓦。这是因为这地方集中了法语区和德语区的两大制表优势。

中国实际上跨越了5个时区! 但在世界时上只有一个时区,采用北京时间为标准时间。欧米茄中国有30家直营店,5家在北京。所以,这款世界时腕表的UTC8时区是北京。

提问表盘上唯一的一处不是激光上色的时区名,你能指出是哪吗?提示一下,转印的。

GMTUTC和世界时腕表

17世纪,英国人写出了一个方程式,把真太阳时间换算成了平均太阳时间,就是我们钟表上的时间,格林威治成了当时天文学家的标准。

18世纪,航海家把格林威治时间默认0°经度。

19世纪,各地都用当地时间,没有统一的标准,所以火车无法准点。

后来,格林威治被设为世界本初子午线,全球被划分为24个时区

格林威治在伦敦,所以这款表把伦敦手工标红:致敬GMT,致敬世界时区的划分。

1972年以前,GMT是国际民用时间标准,专业UTC在钟表上,仍分GMT和世界时。腕表都发的专业测评,世界时功能优于GMT

其实,早在1927年,欧米茄就做过一块可以导航的怀表。

1969年,欧米茄Flightmaster腕表,是第一款为洲际飞行员和旅行者开发的。这些腕表是欧米茄为旅行者而生产的腕表。

2017年,欧米茄真正的世界时腕表诞生,在海马Aqua Terra的基础上,欧米茄在复杂设计和与海洋精神之间实现了完美的平衡。

海马Aqua Terra世界时腕表有什么特殊?

它体现了对精准的双重定义:

1走时精准:天文台,METAS ,你知道METAS认证有多麻烦吗?

2地形精准:激光蚀刻的地球表面;CLM珐琅的关系

系列Aqua Terra世界时金属表,制表工艺,不改变传统造型的前提下提升颜值等维度,开创腕表设计的新赛道

材质的创新,我觉得有以下4点:

1、 此陶瓷非彼陶瓷,

22级钛和5级钛

3、独特性:Moonshine

4、有机玻璃Hesalite 蓝宝石 sapphire怎么选?

陶瓷是一种比珐琅更传统的材质,传统的陶瓷,如砂岩,瓷器,辉石,是以石英矿物为基础的。主要用来做艺术品、礼器、建材。传统陶瓷,坚硬但易碎。世界上最早的陶器出现在中国的仙人洞,距今约2万年。

但高科技陶瓷不一样,钛金属款的表圈的黑色陶瓷是二氧化锆陶瓷,精钢款的表圈是用绿色/蓝色(Summer Blue款)陶瓷的,这些陶瓷,加工工艺复杂,比钢硬、轻而且抗刮擦。有一种大胆前卫、充满运动风尚的大格局。

陶瓷表圈复合打磨,也就是拉丝和抛光。

“氧化锆陶瓷比钢硬6倍,用脚都能想象打磨有多累。”

内表盘是5级钛材质。用最前沿技术实现了表盘上的地球的地形精准,先是3D深雕,用飞秒激光雕出纹理。内表盘是拱形设计,模拟地球的弧度。然后,用CLMColour Laser Marking激光彩色标记印,文本表示)着色。这个生产环节不是飞秒激光,而是纳秒激光。

说到飞秒激光表盘,你想到了什么?但“欧米茄不是“素馅”的”

通过激光照射形成多层氧化膜,最终色彩是上层的干涉效应和层固有颜色产生的叠加效果

颜色是通过调节曝光温度来控制的比如,如果想要蓝色,大约1870°C 的温度如果想增加黄色调,降到1670°C 左右。

激光着色与珐琅的关系简单聊两句

珐琅,被认为是一种高级的工艺,主要是手工和成品率的问题,微绘珐琅更强调大师的工艺。但欧米茄这个CLM工艺,不论从精确性和耐久性,哪怕是复杂程度,已经远超微绘珐琅。而一致性就更不用说了。

“不管是山国还是岛国,您不能因为画不出来就让人家消失啊。”

珐琅微绘,即使是大师想画成一样的,珐琅那种物料也不支持。而CLM工艺,可以保证每个人手上的世界时腕表上的地球地形一致,如果不一致的话,会犯政治错误的,尤其是这年月。精准、可靠,关键时刻还得靠科技。

这就是为什么比尔所在的伯尔尼产区在某些方面超过日内瓦产区。造几千块表与造几十万块表,实力不是一个量级的,这也是为什么某日内瓦品牌的机芯厂也在比尔。

为了把世界地图与外表盘连起来,欧米茄在用了Hesalite有机玻璃刻度环。

为什么不用蓝宝石?Hesalite有机玻璃是热塑性,比蓝宝石更抗冲击,而且欧米茄在表面了防刮擦处理。

指针和小时刻度是Moonshine 18K金的,一说Moonshine,我老是想到北美的某种【Moonshine whisky,呃,饮料。“玩哈雷容易学坏,尤其是跟着老外。”

Moonshine金是一种欧米茄研发的独特的18K金,独特的色泽灵感源自深邃夜空的月光。

【钛金属款】

表壳由2级钛金属制成。表冠、表背、中凸表耳和折叠式表扣也是。

2级钛金属比5级钛金属颜色更深,而且只能进行哑光处理。这种特性让它与黑色表圈和橡胶表带完美搭配!

另外,2级钛99%的钛 (准确地说,是98.925%),可以说目前量产腕表上最纯的金属,【thug】另外一种金属是什么?950铂金比钢重,而二级钛几乎比精钢轻一倍

【提问】钛算不算贵金属?

,论储量并不稀有,但由于与其他地材料的分离过程存在困难,因此仍然是一种昂贵的金属。钛的其它优点就不用说了吧,最值得一提的是生化惰性,你懂的。

直径43毫米,厚度14.12毫米,纵向表耳间距50毫米。防水性达到15个大气压(150)。

精钢款,更适合喜欢经典风格的环球旅行者。其中一款搭配精钢表链、蝴蝶扣。另一枚则配有灰色缝线的绿色橡胶表带、折叠扣。

橡胶表带是抗菌配方。表带的纹理灵感是环游世界的船只上使用的缆绳。缝合线是灰色的,就像缝在船帆上的线。与5级钛表盘2级钛表壳色泽协调。

绿色/蓝色Summer BluePVD表盘太阳射线打磨效果。

钛金属款各方面性能优越又由于其材质和工艺的独特性更适合收藏真戴着玩水也没有问题。

精钢款适合商务正装场合和通勤和休闲运动场合。

机芯】有人质疑说,这款世界时的机芯跟前款没什么区别。

“机芯没毛病干嘛要换呢?”

8938同轴至臻天文台机芯,2019年推出,是欧米茄卓越的同轴至臻天文台机芯系列之一。

“欧米茄的机械表新款里,想找不是至臻天文台认证的还真有一定难度。”

动力储60小时,抵抗15000高斯的强磁场。需要注意的是,89009900系列机芯有跳时指针结构的时区功能。可以在不停秒的情况下设置本地时间。在旅行中,还想要保持腕表的精确性,这是一个优势。

调速系统由非磁性部件组成,如:硅游丝、NivagaussLIGA工艺制成的磷酸镍材质和非晶态金属合金的Nivachoc减震。

- Si14游丝

- 机芯核心零部件均采用Nivagauss?材料制成

- 全部由磷酸镍制成的主机板均采用LIGA技术制成

- Nivachoc减震器弹簧由非晶态金属合金制成

说到精准,咱们看看欧米茄是如何把麻烦留给自己,把精准留给你的——METAS认证

机芯组装后,机芯先送到瑞士官方天文台 (COSC)测试,在15天内完成ISO 3159的走时标准测试。

“天文台认证居然包含ISO标准?”

然后,进行调,从天文台标准的-4+6提升到0+5秒。最后再送至METAS 也就是(瑞士联邦计量研究院)10天的更严苛认证测试。

【总结】

欧米茄海马Aqua Terra世界时这三款腕表,用创新的材质和技术,诠释独特的色彩美学;还体现了对精准的双重定义:

而世界时功能的背后,则是“旅行、发现、进步”。把腕表的核心价值观:传统的符号和技术文化的象征,拓展到全新的维度。