标签: transformer-model

如何从huggingface下载模型?

例如,我想在https://huggingface.co/modelsbert-base-uncased上下载,但找不到“下载”链接。或者说不能下载?

transformer-model huggingface-transformers

52
推荐指数
4
解决办法
13万
查看次数

java 8中的漂亮打印XML

我有一个XML文件存储为DOM文档,我想将它打印到控制台,最好不使用外部库.我知道这个问题已在本网站上被多次询问,但以前的答案都没有对我有用.我正在使用java 8,所以也许这是我的代码与以前的问题不同的地方?我还尝试使用从网络上找到的代码手动设置变换器,但这只是导致not found错误.

这是我的代码,它当前只是在控制台左侧的新行上输出每个xml元素.

import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;


public class Test {
    public Test(){
        try {
            //java.lang.System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");

            DocumentBuilderFactory dbFactory;
            DocumentBuilder dBuilder;
            Document original = null;
            try {
                dbFactory = DocumentBuilderFactory.newInstance();
                dBuilder = dbFactory.newDocumentBuilder();
                original = dBuilder.parse(new InputSource(new InputStreamReader(new FileInputStream("xml Store - Copy.xml"))));
            } catch (SAXException | IOException | ParserConfigurationException e) {
                e.printStackTrace();
            }
            StringWriter stringWriter = new StringWriter();
            StreamResult xmlOutput = new StreamResult(stringWriter); …
Run Code Online (Sandbox Code Playgroud)

java xml dom pretty-print transformer-model

24
推荐指数
3
解决办法
3万
查看次数

如何理解transformer中的masked multi-head attention

我目前正在研究transformer的代码,但我无法理解解码器的屏蔽多头。论文上说是为了不让你看到生成词,但是我无法理解生成词后的词如果没有生成,怎么能看到呢?

我尝试阅读变压器的代码(链接:https : //github.com/Kyubyong/transformer)。代码实现掩码如下所示。它使用下三角矩阵来屏蔽,我不明白为什么。

padding_num = -2 ** 32 + 1
diag_vals = tf.ones_like(inputs[0, :, :])  # (T_q, T_k)
tril = tf.linalg.LinearOperatorLowerTriangular(diag_vals).to_dense()  # (T_q, T_k)
masks = tf.tile(tf.expand_dims(tril, 0), [tf.shape(inputs)[0], 1, 1])  # (N, T_q, T_k)
paddings = tf.ones_like(masks) * padding_num
outputs = tf.where(tf.equal(masks, 0), paddings, inputs)
Run Code Online (Sandbox Code Playgroud)

transformer-model deep-learning tensorflow attention-model

16
推荐指数
1
解决办法
4431
查看次数

为什么嵌入尺寸必须能被 MultiheadAttention 中的头数整除?

我正在学习变形金刚。这是MultiheadAttention的 pytorch 文档。在他们的实现中,我发现有一个限制:

\n
 assert self.head_dim * num_heads == self.embed_dim, "embed_dim must be divisible by num_heads"\n
Run Code Online (Sandbox Code Playgroud)\n

为什么需要约束:embed_dim must be divisible by num_heads? 如果我们回到方程

\n

MultiHead(Q,K,V)=Concat(head1\xe2\x80\x8b,\xe2\x80\xa6,headh\xe2\x80\x8b)WOwhereheadi\xe2\x80\x8b=注意力(QWiQ\xe2\x80\ x8b,KWiK\xe2\x80\x8b,VWiV\xe2\x80\x8b)

\n

假设:\n Q, K,Vn x emded_dim矩阵;所有权重矩阵Wemded_dim x head_dim

\n

那么,concat[head_i, ..., head_h]将是一个n x (num_heads*head_dim)矩阵;

\n

W^O有尺寸(num_heads*head_dim) x embed_dim

\n

[head_i, ..., head_h] * W^O将成为n x embed_dim输出

\n

我不知道为什么我们需要embed_dim must be divisible …

transformer-model python-3.x attention-model pytorch

15
推荐指数
1
解决办法
4738
查看次数

gcc ON arm/android

我刚买了一台EEE垫变压器.像我拥有的​​任何硬件一样,我想在它上面有一个C编译器.我知道我可以交叉编译,但我想在设备上进行开发.我搜索过谷歌,我似乎找到了关于如何为x86/64 Linux构建arm工具链的页面.思考?

android gcc arm transformer-model android-3.0-honeycomb

14
推荐指数
2
解决办法
2万
查看次数

密集合成器的实现

我正在尝试理解 Synthesizer 论文 ( https://arxiv.org/pdf/2005.00743.pdf 1) 并且有对密集合成器机制的描述,该机制应该取代 Transformer 架构中描述的传统注意力模型。

在此处输入图片说明

所述致密合成被描述为这样的:

在此处输入图片说明

所以我试图实现这个层,它看起来像这样,但我不确定我是否做对了:

class DenseSynthesizer(nn.Module):
    def __init__(self, l, d):
        super(DenseSynthesizer, self).__init__()
        self.linear1 = nn.Linear(d, l)
        self.linear2 = nn.Linear(l, l)

    def forward(self, x, v):
        # Equation (1) and (2)
        # Shape: l x l
        b = self.linear2(F.relu(self.linear1(x)))   
        # Equation (3)
        # [l x l] x [l x d] -> [l x d]
        return torch.matmul(F.softmax(b), v) 
Run Code Online (Sandbox Code Playgroud)

用法:

l, d = 4, 5

x, v =  torch.rand(l, d), torch.rand(l, d)

synthesis = DenseSynthesizer(l, …
Run Code Online (Sandbox Code Playgroud)

python transformer-model neural-network deep-learning pytorch

14
推荐指数
1
解决办法
296
查看次数

android系统上的"touchmove"事件:Transformer Prime

我正在研究Transformer Pad并开发一个绘图板.我使用PhoneGap(javascript)编写代码而不是JAVA.

但触摸移动事件非常奇怪.

我想当我将手指放在垫子上时,它会不断地收集我在画布上触摸的坐标.但它没有!这很荒谬,它只收集"1"坐标:我的手指移动到画布上的第一个点.

以下是关于"Touch && Move事件"的代码:

function touchStart(event){
    if (event.targetTouches.length == 1) {
    var touch = event.targetTouches[0];     

        if (event.type == "touchstart") {
            line_start_x= touch.pageX-  canvas_org_x;
            line_start_y= touch.pageY-  canvas_org_y;
            context.beginPath();                        
            context.moveTo(line_start_x, line_start_y); 

        }//if           
    }//if 1
}//function.

function Touch_Move(event){
    line_end_x= event.touches[0].pageX-  canvas_org_x;
                line_end_y= event.touches[0].pageY-  canvas_org_y;
                context.lineTo(line_end_x, line_end_y);
                context.stroke();
                test++;                 
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么每次我把手指放在垫子上,试图绘制线条,曲线或任何我想要的东西.当手指移动时,仅出现非常短的片段.所以我在这个js文件的开头声明了一个变量:"var test = 0".我发现虽然我在没有离开或停止的情况下将手指放在垫上,但"测试"的值仍为1.这意味着我将手指放在它上面.但它不会持续触发事件:"Touch_Move".

我现在能做什么?我需要一个相应的事件来触摸板上的"mousemove".至少,必须不断触发事件.

                                                                   Thank you!
Run Code Online (Sandbox Code Playgroud)

javascript android transformer-model touch cordova

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

transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8")不起作用

我有以下方法将XMLDom写入流:

public void writeToOutputStream(Document fDoc, OutputStream out) throws Exception {
    fDoc.setXmlStandalone(true);
    DOMSource docSource = new DOMSource(fDoc);
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty(OutputKeys.INDENT, "no");
    transformer.transform(docSource, new StreamResult(out));
}
Run Code Online (Sandbox Code Playgroud)

我正在测试其他一些XML功能,这只是我用来写入文件的方法.我的测试程序生成了33个测试用例,其中写出了文件.其中28个具有以下标题:

<?xml version="1.0" encoding="UTF-8"?>...
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,现在有一个测试用例产生:

<?xml version="1.0" encoding="ISO-8859-1"?>...
Run Code Online (Sandbox Code Playgroud)

还有四种产品:

<?xml version="1.0" encoding="Windows-1252"?>...
Run Code Online (Sandbox Code Playgroud)

您可以清楚地看到,我将ENCODING输出键设置为UTF-8.这些测试曾用于早期版本的Java.我有一段时间(超过一年)没有运行测试,但今天在"Java(TM)SE运行时环境(版本1.6.0_22-b04)"上运行我得到了这个有趣的行为.

我已经验证导致问题的文档是从最初具有这些编码的文件中读取的.似乎新版本的库试图保留已读取的源文件的编码.但这不是我想要的......我真的希望输出为UTF-8.

有没有人知道可能导致变压器忽略UTF-8编码设置的任何其他因素?还有什么必须在文档上设置,以忘记最初读取的文件的编码?

更新:

我在另一台机器上检查了同一个项目,在那里构建并运行了测试.在那台机器上,所有测试都通过了!所有文件的标题中都有"UTF-8".该机器具有"Java(TM)SE运行时环境(版本1.6.0_29-b11)"两台机器都运行Windows 7.在新机器上运行正常,jdk1.5.0_11用于进行构建,但是在旧机器上运行机器jdk1.6.0_26用于构建.用于两个版本的库完全相同.在构建时是否可能与1.5的JDK 1.6不兼容?

更新:

4.5年后,Java库仍然被打破,但由于Vyrx的建议,我终于有了一个合适的解决方案!

public void writeToOutputStream(Document fDoc, OutputStream out) throws Exception {
    fDoc.setXmlStandalone(true);
    DOMSource docSource = new DOMSource(fDoc);
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    transformer.setOutputProperty(OutputKeys.INDENT, "no");
    out.write("<?xml version=\"1.0\" …
Run Code Online (Sandbox Code Playgroud)

java xml xml-serialization transformer-model

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

在Java DOM文档中设置名称空间和前缀

我正在尝试将ResultSet转换为XML文件.我首先使用这个例子进行序列化.

import  org.w3c.dom.bootstrap.DOMImplementationRegistry;
import  org.w3c.dom.Document;
import  org.w3c.dom.ls.DOMImplementationLS;
import  org.w3c.dom.ls.LSSerializer;

...

DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();

DOMImplementationLS impl = 
    (DOMImplementationLS)registry.getDOMImplementation("LS");

...     

LSSerializer writer = impl.createLSSerializer();
String str = writer.writeToString(document);
Run Code Online (Sandbox Code Playgroud)

在我完成这项工作后,我尝试验证我的XML文件,有几个警告.一个关于没有doctype的人.所以我尝试了另一种方法来实现它.我遇到了Transformer课程.这个类让我设置编码,doctype等.

以前的实现支持自动命名空间修复.以下不是.

private static Document toDocument(ResultSet rs) throws Exception {   
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.newDocument();

    URL namespaceURL = new URL("http://www.w3.org/2001/XMLSchema-instance");
    String namespace = "xmlns:xsi="+namespaceURL.toString();

    Element messages = doc.createElementNS(namespace, "messages");
    doc.appendChild(messages);

    ResultSetMetaData rsmd = rs.getMetaData();
    int colCount = rsmd.getColumnCount();

    String attributeValue = "true";
    String attribute = …
Run Code Online (Sandbox Code Playgroud)

java xml serialization transformer-model

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

如何在 MLM 和 NSP 的新领域从头开始训练 BERT?

我\xe2\x80\x99m 尝试使用我自己的数据集和 HuggingFace 库从头开始训练 BERT 模型。我想以一种与原始 BERT 模型完全相同的架构来训练模型。

\n

在原始论文中,它指出:\xe2\x80\x9cBERT 在两个任务上进行训练:预测随机掩码标记(MLM)和预测两个句子是否相互跟随(NSP)。SCIBERT 遵循与 BERT 相同的架构,但在科学文本上进行了预训练。\xe2\x80\x9d

\n

I\xe2\x80\x99m 试图了解如何在上述两个任务上训练模型。目前,我初始化模型如下:

\n
from transformers import BertForMaskedLM\nmodel = BertForMaskedLM(config=config)\n
Run Code Online (Sandbox Code Playgroud)\n

然而,它仅适用于 MLM,而不适用于 NSP。我怎样才能用 NSP 初始化和训练模型,或者也许我原来的方法就很好?

\n

我的假设是

\n
    \n
  1. 初始化BertForPreTraining(对于 MLM 和 NSP),或者

    \n
  2. \n
  3. 完成训练后BertForMaskedLM,初始化相同的模型并再次训练BertForNextSentencePrediction(但这种方法\xe2\x80\x99s计算和\n资源将花费两倍\xe2\x80\xa6)

    \n
  4. \n
\n

I\xe2\x80\x99m 不确定哪一个是正确的方法。任何见解或建议将不胜感激。

\n

nlp transformer-model deep-learning bert-language-model huggingface-transformers

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