标签: embedding

Gensim Doc2Vec - 为什么 infer_vector() 使用 alpha?

我尝试将句子映射到向量,以使句子相互比较。为了测试 gensim 的 Doc2Vec 模型,我下载了 sklearn 的新闻组数据集并在其上训练模型。

为了比较两个句子,我使用 model.infer_vector() 并且我想知道为什么使用同一句子的两个调用会为我提供不同的向量:

model = Doc2Vec(vector_size=100, window=8, min_count=5, workers=6)
model.build_vocab(documents)

epochs=10
for epoch in range(epochs):
    print("Training epoch %d" % (epoch+1))
    model.train(documents,  total_examples=len(documents), epochs=epochs)

    v1 = model.infer_vector("I feel good")
    v2 = model.infer_vector("I feel good")
    print(np.linalg.norm(v1-v2)) 
Run Code Online (Sandbox Code Playgroud)

输出:

训练时期 1

0.41606528

训练时期 2

0.43440753

训练纪元 3

0.3203116

训练纪元 4

0.3039317

训练纪元 5

0.68224543

训练时期 6

0.5862567

训练纪元 7

0.5424634

训练纪元 8

0.7618142

训练纪元 9

0.8170159

训练纪元 10

0.6028216

如果我设置 alpha 和 min_alpha = 0,我会得到“我感觉很好”和“我感觉很好”的一致向量,但模型在每个时期都给我相同的向量,所以它似乎没有学到任何东西:

训练时期 1 …

embedding sentence gensim doc2vec

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

用gensim的fasttext的wrapper训练词嵌入后,如何嵌入新的句子?

阅读 gensim文档中的教程后,我不明白从训练模型生成新嵌入的正确方法是什么。到目前为止,我已经训练了 gensim 的快速文本嵌入,如下所示:

from gensim.models.fasttext import FastText as FT_gensim

model_gensim = FT_gensim(size=100)

# build the vocabulary
model_gensim.build_vocab(corpus_file=corpus_file)

# train the model
model_gensim.train(
    corpus_file=corpus_file, epochs=model_gensim.epochs,
    total_examples=model_gensim.corpus_count, total_words=model_gensim.corpus_total_words
)
Run Code Online (Sandbox Code Playgroud)

然后,假设我想获得与这些句子相关的嵌入向量:

sentence_obama = 'Obama speaks to the media in Illinois'.lower().split()
sentence_president = 'The president greets the press in Chicago'.lower().split()
Run Code Online (Sandbox Code Playgroud)

我怎样才能让他们得到model_gensim我以前训练过的东西?

nlp machine-learning embedding gensim

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

Golang更新作为接口传递的函数内的结构字段

我是新手(golang)。这就是为什么我的问题可能无关紧要(或无法回答)。

我创建了两个结构。这两个都嵌入了另一个结构。现在我想更新函数内嵌入结构的字段。

package main

import (
    "fmt"
    "reflect"
    "time"
)

type Model struct {
    UpdatedAt time.Time
}

type Fruit struct {
    Model
    label string
}

type Animal struct {
    Model
    label string
}

func update(v interface{}) {
    reflectType := reflect.TypeOf(v)
    reflectKind := reflectType.Kind()
    if reflectKind == reflect.Ptr {
        reflectType = reflectType.Elem()
    }
    m := reflect.Zero(reflectType)
    fmt.Println(m)
}

func main() {
    apple := &Fruit{
        label: "Apple",
    }
    tiger := &Animal{
        label: "Tiger",
    }
    update(apple)
    update(tiger)
    fmt.Println(apple)
    fmt.Println(tiger)
}

Run Code Online (Sandbox Code Playgroud)

我希望实现该update函数,以便它将当前时间放入 …

reflection struct interface embedding go

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

embedding_bag 在 PyTorch 中的具体工作原理

在 PyTorch 中,torch.nn.function.embedding_bag 似乎是负责执行嵌入查找的实际工作的主要函数。在 PyTorch 的文档中,提到 embedding_bag 可以完成其工作 > 无需实例化中间嵌入。这究竟意味着什么?这是否意味着例如当模式为“sum”时它会进行就地求和?或者它只是意味着在调用 embedding_bag 时不会产生额外的张量,但仍然从系统的角度来看,所有中间行向量已经被提取到处理器中以用于计算最终张量?

embedding python-embedding neural-network torch pytorch

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

使用 Visual Studio 将 Julia 嵌入到 C++ 中

我尝试将 Julia v1.4.2 嵌入到使用 Visual Studio 2017 v15.0 构建的简单 C++ 控制台应用程序中。我遵循https://docs.julialang.org/en/v1/manual/embedding/#High-Level-Embedding-on-Windows-with-Visual-Studio-1上的官方文档。然而,当输入 #include <julia.h> VS 时,会出现一系列超过 25 个错误,例如:

errhandlingapi.h 中未定义标识符“PCONTEXT”

标识符“PCONTEXT”在 WinBase.h 中未定义

标识符“PSLIST_HEADER”在 WinBase.h 中未定义

...

c++ windows embedding julia

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

Golang 类型嵌入工具

我有一个嵌入类型 B 的类型 T,并且 *B 实现了 I。 *T 可以分配给类型 I 的变量,但不是在 T 的情况下,这是否意味着 (*T) 的方法集包含值和B的指针接收器?

package main

import (
    "fmt"
)

type I interface {
    Foo()
}
type B struct {}
type T struct {
    B
}

func (a *B) Foo() {
    fmt.Println("Bar")
}

func main() {
    t := T{B{}}
    // var i I = t -> error
    var i I = &t
    i.Foo()
}

Run Code Online (Sandbox Code Playgroud)

methods struct embedding go

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

是否可以从C程序调用python方法?

我记得在某个地方可以使用C语言调用python方法

#include "python.h"
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到这个或任何例子的来源.

如何在C程序中调用python方法?

c python embedding

0
推荐指数
1
解决办法
227
查看次数

Pytorch 运行时错误:设备类型为 cuda 的预期对象,但在调用 _th_index_select 时获得了参数 #1 'self' 的设备类型 cpu

我正在训练一个模型,该模型采用标记化的字符串,然后通过嵌入层和 LSTM。但是,输入中似乎存在错误,因为它没有通过嵌入层。

class DrugModel(nn.Module):
    def __init__(self, input_dim, output_dim, hidden_dim, drug_embed_dim,
            lstm_layer, lstm_dropout, bi_lstm, linear_dropout, char_vocab_size,
            char_embed_dim, char_dropout, dist_fn, learning_rate,
            binary, is_mlp, weight_decay, is_graph, g_layer,
            g_hidden_dim, g_out_dim, g_dropout):

        super(DrugModel, self).__init__()

        # Save model configs
        self.drug_embed_dim = drug_embed_dim
        self.lstm_layer = lstm_layer
        self.char_dropout = char_dropout
        self.dist_fn = dist_fn
        self.binary = binary
        self.is_mlp = is_mlp
        self.is_graph = is_graph
        self.g_layer = g_layer
        self.g_dropout = g_dropout
        self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

        # For one-hot encoded SMILES
        if not is_mlp:
            self.char_embed = nn.Embedding(char_vocab_size, char_embed_dim,
                                           padding_idx=0) …
Run Code Online (Sandbox Code Playgroud)

gpu runtime-error embedding pytorch

0
推荐指数
1
解决办法
9732
查看次数

无法从“llama_index”导入名称“LangchainEmbedding”

我正在尝试构建一个简单的 RAG,但我陷入了这段代码:

from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from llama_index import LangchainEmbedding, ServiceContext

embed_model = LangchainEmbedding(
  HuggingFaceEmbeddings(model_name="thenlper/gte-large")
)
service_context = ServiceContext.from_defaults(
    chunk_size=256,
    llm=llm,
    embed_model=embed_model
)
index = VectorStoreIndex.from_documents(documents, service_context=service_context)
Run Code Online (Sandbox Code Playgroud)

我在哪里得到 ImportError: Cannot import name 'LangchainEmbedding' from 'llama_index' 我该如何解决?这和我从事 Colab 工作有关吗?

python embedding google-colaboratory llama-index langchain

0
推荐指数
1
解决办法
6052
查看次数

死锁与匿名互斥和结构

假设我有这两种结构:

type A struct {
    Mutex sync.Mutex
    i int
}

type B struct {
    A
    sync.Mutex
}
Run Code Online (Sandbox Code Playgroud)

现在,当我试图锁定B然后A我遇到了僵局:

var b B
b.Lock()
b.Mutex.Lock()
b.Mutex.Unlock()
b.Unlock()
Run Code Online (Sandbox Code Playgroud)

我想通了,这是与结构的互斥体的名字相关A,例如,有是,如果我将其命名为无僵局Mutexx,而不是Mutex.但我不知道为什么这很重要.有人可以解释一下这种行为吗?

https://play.golang.org/p/UVi_WLWeGmi

struct mutex deadlock embedding go

-1
推荐指数
1
解决办法
119
查看次数

如何避免在调用嵌入类型和嵌入类型之间具有不同行为的golang函数?

让我们说在第三方库中我们有一个接口和一个实现这个接口的结构.我们还假设有一个函数将ParentInterface作为参数,它对不同类型具有不同的行为.

type ParentInterface interface {
    SomeMethod()
}

type ParentStruct struct {
    ...
}

func SomeFunction(p ParentInterface) {
    switch x := p.Type {
    case ParentStruct:
        return 1
    }
    return 0
}
Run Code Online (Sandbox Code Playgroud)

在我们的代码中,我们想要使用这个接口,但是使用我们的增强行为,所以我们将它嵌入到我们自己的结构中.编译器实际上允许我们ParentInterface直接在我的struct上调用函数:

type MyStruct struct {
    ParentInterface
}

parentStruct := ParentStruct{...}
myStruct := MyStruct{parentStruct}

parentStruct.SomeMethod()  // Compiler OK.
myStruct.SomeMethod()  // Compiler OK. Result is same. Great.

SomeFunction(parentStruct)  // Compiler OK. Result is 1.
SomeFunction(myStruct.ParentInterface)  // Compiler OK. Result is 1.
SomeFunction(myStruct)  // Compiler OK. Result is 0. (!)
Run Code Online (Sandbox Code Playgroud)

最后一例不是问题吗?我不止一次遇到过这种错误.因为我愉快地使用 …

methods struct interface embedding go

-2
推荐指数
1
解决办法
60
查看次数

无法将结构转换为具有相同基础字段的不同类型

type Req struct {
    apiVersion       string
    path             string
    resourceEndpoint string
    accessKey        string
    log              *logrus.Entry
    incomingReq      interface{}
    httpClient       lib.HTTPClient
    redisClient      redis.Cmdable
    ctx              context.Context
} 

type TestReq struct {
    Req
}
Run Code Online (Sandbox Code Playgroud)

根据this this question及其答案,我觉得我应该能够做到以下几点:

req := &Req{}
req = TestReq(req)
Run Code Online (Sandbox Code Playgroud)

但是我在 VsCode 中收到此错误:

无法将 req(*Req 类型的变量)转换为 TestReq 编译器(InvalidConversion)

这两个结构体是否具有相同的底层字段?如果是这样,为什么第一个不能转换为第二个?

struct embedding type-conversion go

-2
推荐指数
1
解决办法
102
查看次数