在R中使用Huggingface变压器模型

nhaq1z21  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(188)

我尝试在R中使用不同的Huggingface模型。这是通过网状结构导入Transformers包实现的(谢谢,https://rpubs.com/eR_ic/transfoRmers
输入只需要一个字符串的模型对我来说是有效的,有些模型需要一个列表或向量,我不知道从哪里可以得到关于如何准确调用模型的信息。
https://huggingface.co/openai/clip-vit-base-patch32为例,从python示例中我知道它获取了一张图片和(我假设)可能类的字符向量,Python输入如下:text=["a photo of a cat", "a photo of a dog"], images=image

library(reticulate)
library(here)
library(tidyverse)
transformers <- reticulate::import("transformers")
image_classification_zero_shot <- transformers$pipeline(task = "zero-shot-image-classification", model = "openai/clip-vit-base-patch32")
image_classification <- transformers$pipeline(task = "image-classification", model = "microsoft/beit-base-patch16-224-pt22k-ft22k")

image_url <- "http://images.cocodataset.org/val2017/000000039769.jpg"

只需要图像的模型可以工作

image_classification(images = image_url)

同样需要字符输入的模型不起作用。

image_classification_zero_shot(text = c("cats", "dogs"), images = image_url)
image_classification_zero_shot(text = "[cats, dogs]", images = image_url)

> Error in py_call_impl(callable, dots$args, dots$keywords) : 
   TypeError: object of type 'NoneType' has no len()

视图(image_classification_zero_shot)不产生任何信息。
1.我如何让零炮模型工作?
1.一般来说,我怎样才能获得在R中调用这些模型的信息呢?它是一个函数,我不应该在某个地方(在R中或在huggingface上)找到它的参数信息吗?
非常感谢!

nnsrf1az

nnsrf1az1#

我在使用另一个名为"jonas/sdg_classifier_osdg"的Huggingface转换器时遇到了类似的问题。

Error in py_call_impl(callable, dots$args, dots$keywords) : 
TypeError: linear(): argument 'input' (position 1) must be Tensor, not 
BatchEncoding
    • 解决方案**:

1.在rmarkdown笔记本中编写python代码
1.在控制台上激活repl_python(),然后编写python代码。
同样的代码在用python编写时生成Tensor,而在用R编写时生成字符串。

    • 其他问题**:

如何有效地把一个R弦转换成一个Tensor,它的理解pythorch?(当我试图加载 Torch 与网状,R崩溃)

相关问题