小编Des*_*wal的帖子

max_length、填充和截断参数在 HuggingFace 的 BertTokenizerFast.from_pretrained('bert-base-uncased') 中如何工作?

我正在处理文本分类问题,我想使用 BERT 模型作为基础,然后使用密集层。我想知道这 3 个参数是如何工作的?例如,如果我有 3 个句子:

'My name is slim shade and I am an aspiring AI Engineer',
'I am an aspiring AI Engineer',
'My name is Slim'
Run Code Online (Sandbox Code Playgroud)

那么这 3 个参数会做什么呢?我的想法如下:

  1. max_length=5将严格保留长度为 5 之前的所有句子
  2. padding=max_length将为第三句添加 1 的填充
  3. truncate=True将截断第一句和第二句,使其长度严格为 5。

如果我错了,请纠正我。

下面是我使用过的代码。

! pip install transformers==3.5.1

from transformers import BertTokenizerFast

tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased')

tokens = tokenizer.batch_encode_plus(text,max_length=5,padding='max_length', truncation=True)
  
text_seq = torch.tensor(tokens['input_ids'])
text_mask = torch.tensor(tokens['attention_mask'])
Run Code Online (Sandbox Code Playgroud)

python deep-learning pytorch bert-language-model huggingface-tokenizers

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

将ReduceLROnPlateau 与Adam 优化器一起使用是没有意义的吗?

这个问题基本上是针对 Keras 的工作或tf.keras对该框架有非常深入了解的人

据我所知,tf.keras.optimizers.Adam是一个已经有自适应学习速率方案的优化器。from keras.callbacks.ReduceLROnPlateau那么如果我们与优化器或其他任何一起使用Adam,这样做不是没有意义吗?我没有Kerasbased的内部工作原理Optimizer,但对我来说很自然的是,如果我们使用自适应优化器,为什么要使用它,如果我们使用这个给定的回调,对训练会有什么影响

machine-learning deep-learning keras tensorflow tf.keras

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

Tensorflow/Keras 中 Dice Loss 的正确实现

我一直在尝试尝试基于区域的:骰子损失,但互联网上有很多不同程度的变化,我找不到两个相同的实现。问题是所有这些都会产生不同的结果。以下是我找到的实现。有些使用作者在本文中称为smoothing的因子,有些在分子和分母中使用它,使用一种实现等等。epsilonGamma

有人可以帮助我正确实施吗?

import tensorflow as tf
import tensorflow.keras.backend as K
import numpy as np

def dice_loss1(y_true, y_pred, smooth=1e-6):
    '''
    https://www.kaggle.com/code/bigironsphere/loss-function-library-keras-pytorch/notebook
    '''
    y_pred = tf.convert_to_tensor(y_pred)
    y_true = tf.cast(y_true, y_pred.dtype)
    smooth = tf.cast(smooth, y_pred.dtype)
    
    y_pred = K.flatten(y_pred)
    y_true = K.flatten(y_true)
    
    intersection = K.sum(K.dot(y_true, y_pred))    
    dice_coef = (2*intersection + smooth) / (K.sum(y_true) + K.sum(y_pred) + smooth)
    dice_loss = 1-dice_coef
    return dice_loss
    

def dice_loss2(y_true, y_pred, smooth=1e-6): # Only Smooth
    """
    https://gist.github.com/wassname/7793e2058c5c9dacb5212c0ac0b18a8a
    """
    y_pred = tf.convert_to_tensor(y_pred)
    y_true …
Run Code Online (Sandbox Code Playgroud)

machine-learning computer-vision deep-learning keras tensorflow

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

Pytorch卷积神经网络(CNN)中Conv2D中的in_channels和out_channels解读

假设我有一个 CNN,其起始 2 层为:

inp_conv = Conv2D(in_channels=1,out_channels=6,kernel_size=(3,3))
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我,但我认为如果代码可以被认为是这样的话,这一行是什么

有一个grayscale图像作为输入,我们必须使用 6 个相同大小的不同内核(3,3)从单个图像生成 6 个不同的特征图。

如果我Conv2D在第一层之后有第二层

second_conv_connected_to_inp_conv = Conv2D(in_channels=6,out_channels=12,kernel_size=(3,3))
Run Code Online (Sandbox Code Playgroud)

这意味着什么out_channels?作为第一层输出的 6 个特征图每一个都会有 12 个新特征图,还是 6 个传入特征总共会有 12 个特征图?

python-3.x deep-learning conv-neural-network pytorch

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

Tensorflow(tf-addons)中的 SigmoidFocalCrossEntropy 可以用于多类分类吗?(什么是正确的方法)?

Tensorflow 中给出的焦点损失用于类别不平衡。对于二元类分类,有很多可用的代码,但对于多类分类,帮助很少。我运行了包含 250 个类的目标变量的代码One Hot Encoded,它给出的结果没有任何错误。

y = pd.get_dummies(df['target']) # One hot encoded target classes
model.compile(
    optimizer="adam", loss=tfa.losses.SigmoidFocalCrossEntropy(), metrics= metric
)
Run Code Online (Sandbox Code Playgroud)

我只是想知道谁编写了这段代码,或者对这段代码有足够了解的人,它可以用于多类分类吗?如果没有,那为什么它没有给我错误,反而比CrossEntropy. 此外,在像这样的其他实现中alpha,必须为每个类给出 的值,但在 Tensorflow 的实现中只给出一个值。

使用这个的正确方法是什么?

keras tensorflow loss-function tf.keras tensorflow2.0

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

如何使用 pytesseract/tesseract 版本 4.0(使用 equ.traineddata)提取带有数学符号的文本。不再支持“equ”

如何使用tesseract来提取数学方程?

在阅读下面给出的图像时:

在此输入图像描述

使用后:

img = cv2.imread(IN_PATH+'sample1.png')

pytesseract.image_to_string(img)
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

'The value of 7/8144 is\n- (a) 20.2 (b) 20.16\n(c) 20.12 (d) 20.4'
Run Code Online (Sandbox Code Playgroud)

对于旧版本,我可以使用

config='-l eng + equ'
pytesseract.image_to_string(img,config=config)
Run Code Online (Sandbox Code Playgroud)

equ中不再支持tesseract 4.0+。我也有equ.traineddata文件,但我不知道它是如何工作的,当我尝试将其粘贴到文件中时,/usr/share/tesseract-ocr/4.00/tessdata/它抛出了一个无法复制的错误。

请帮助我如何提取一些带有简单数学符号的文本。

ocr tesseract image-processing computer-vision python-tesseract

7
推荐指数
0
解决办法
1795
查看次数

如何将 tessdata_best 用于 tesseract (pytesseract)。论据和程序是什么?

TL;DR:如何安装以与inside intessdata_best一起使用pytesseractcondaUbuntu 18

我已经使用pytesseract内部conda环境相当多了,但需要提高准确性,我发现这可以tessdata_best为您提供最佳准确性。我如何安装和使用该版本?我正在使用Ubuntu 18并且必须与pytesseract.

我已经tesseract安装了/usr/share/tesseract-ocr/,里面只有 1 个tessdata

我是否需要通过将其复制到旁边的tessdata_best目录来从 github获取它?/usr/share/tesseract-ocr/tessdata

即使如此,如果我想使用tessdata-best,我必须使用什么?我需要更改configas 吗--oem 0/1/2/3

第三件事也是最后一件事是我的language.trainedata文件位于/home/deshwal/anaconda3/envs/py36/share/tessdata/eng.traineddata. 我也需要粘贴tessdata_best到这个位置吗?因为当我尝试更改语言目录时,它给我错误如下:

/home/deshwal/anaconda3/envs/py36/share/tessdata/equ.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'equ\' Tesseract couldn\'t load any languages! Could not initialize tesseract.'

python ocr tesseract python-tesseract tesseract.js

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

如何在python中使用skimage / opencv检测文档图像中的闪光/眩光?

请建议一种新方法或至少一种方法,使这些方法中的任何一个都足够强大,能够以良好的速率进行检测

我有一些图像(大部分是从计算机屏幕拍摄的),其中存在来自相机或所谓的某种闪光灯。我想丢弃这些类型的图像或至少通知用户重新拍摄它。我怎么能这么做呢?

我没有足够的资源来训练深度学习分类模型,例如快速眩光检测

这是70多张图片的数据

我按顺序尝试了以下几件事:

  1. 使用 OpenCVcv2.minMaxLoc函数进行明亮区域检测,但无论如何它总是返回该区域,而且对于我的图像类型来说,大多数情况下它都会失败。

  2. 我找到了要删除的代码,但它在 Matlab 中

  3. 这段代码使用了Clahe调整,但问题是它是删除而不是检测

  4. 这个看起来很有前途,但对于我的图像类型来说不够强大

我发现的最终下面的代码是我所需要的,但有人可以帮助我使其变得健壮。例如,使用这些阈值/更改它们/或使用二值化、闭合(通过扩张增加白色区域,然后通过侵蚀去除黑色噪声),以便将这些阈值推广到所有人。

def get_image_stats(img_path):
    img = cv2.imread(img_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (25, 25), 0)
    no_text = gray * ((gray/blurred)>0.99)                     # select background only
    no_text[no_text<10] = no_text[no_text>20].mean()           # convert black pixels to mean value
    no_bright = no_text.copy()
    no_bright[no_bright>220] = no_bright[no_bright<220].mean() # disregard bright pixels

    std = no_bright.std()
    bright = (no_text>220).sum()

    if no_text.mean()<200 and bright>8000:
        return True
Run Code Online (Sandbox Code Playgroud)

以下是一些例子:

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

python opencv image image-processing computer-vision

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

当图像以 0 到 9 的小数进行评级时,Earth Mover Loss 的输入类型应该是什么(Keras、Tensorflow)

我正在尝试实施谷歌的 NIMA 研究论文,他们对图像质量进行评分。我正在使用 TID2013 数据集。我有 3000 张图像,每张图像的分数从 0.00 到 9.00

df.head()
>>
Image Name          Score
0   I01_01_1.bmp    5.51429
1   i01_01_2.bmp    5.56757
2   i01_01_3.bmp    4.94444
3   i01_01_4.bmp    4.37838
4   i01_01_5.bmp    3.86486

Run Code Online (Sandbox Code Playgroud)

找到了下面给出的损失函数代码

def earth_mover_loss(y_true, y_pred):
    cdf_true = K.cumsum(y_true, axis=-1)
    cdf_pred = K.cumsum(y_pred, axis=-1)
    emd = K.sqrt(K.mean(K.square(cdf_true - cdf_pred), axis=-1))
    return K.mean(emd)
Run Code Online (Sandbox Code Playgroud)

我将模型构建的代码编写为:

base_model = InceptionResNetV2(input_shape=(W,H, 3),include_top=False,pooling='avg',weights='imagenet')
for layer in base_model.layers: 
    layer.trainable = False

x = Dropout(0.45)(base_model.output)
out = Dense(10, activation='softmax')(x) # there are 10 classes

model = Model(base_model.input, out) …
Run Code Online (Sandbox Code Playgroud)

python image-recognition deep-learning keras tensorflow

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

如何查看 Lang Chain 中保存的 Chroma(或任何其他数据库)文档的嵌入?

Chroma当我使用withLangchainOpenAIembeddings时,我可以看到除文档的嵌入之外的所有内容。它总是None向我展示这一点

这是代码:

for db_collection_name in tqdm(["class1-sub2-chap3", "class2-sub3-chap4"]):
    documents = []
    doc_ids = []

    for doc_index in range(3):
        cl, sub, chap = db_collection_name.split("-")
        content = f"This is {db_collection_name}-doc{doc_index}"
        doc = Document(page_content=content, metadata={"chunk_num": doc_index, "chapter":chap, "class":cl, "subject":sub})
        documents.append(doc)
        doc_ids.append(str(doc_index))


    # # Initialize a Chroma instance with the original document
    db = Chroma.from_documents(
         collection_name=db_collection_name,
         documents=documents, ids=doc_ids,
         embedding=embeddings, 
         persist_directory="./data")
    
     db.persist()
Run Code Online (Sandbox Code Playgroud)

当我这样做时db.get(),我看到的一切都如预期的embedding那样None

{'ids': ['0', '1', '2'],
 'embeddings': None,
 'documents': ['This is class1-sub2-chap3-doc0', …
Run Code Online (Sandbox Code Playgroud)

python nlp openai-api langchain chromadb

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