我正在处理文本分类问题,我想使用 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 个参数会做什么呢?我的想法如下:
max_length=5将严格保留长度为 5 之前的所有句子padding=max_length将为第三句添加 1 的填充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
这个问题基本上是针对 Keras 的工作或tf.keras对该框架有非常深入了解的人
据我所知,tf.keras.optimizers.Adam是一个已经有自适应学习速率方案的优化器。from keras.callbacks.ReduceLROnPlateau那么如果我们与优化器或其他任何一起使用Adam,这样做不是没有意义吗?我没有Kerasbased的内部工作原理Optimizer,但对我来说很自然的是,如果我们使用自适应优化器,为什么要使用它,如果我们使用这个给定的回调,对训练会有什么影响?
我一直在尝试尝试基于区域的:骰子损失,但互联网上有很多不同程度的变化,我找不到两个相同的实现。问题是所有这些都会产生不同的结果。以下是我找到的实现。有些使用作者在本文中称为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
假设我有一个 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 个特征图?
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 的实现中只给出一个值。
使用这个的正确方法是什么?
如何使用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
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.'
请建议一种新方法或至少一种方法,使这些方法中的任何一个都足够强大,能够以良好的速率进行检测
我有一些图像(大部分是从计算机屏幕拍摄的),其中存在来自相机或所谓的某种闪光灯。我想丢弃这些类型的图像或至少通知用户重新拍摄它。我怎么能这么做呢?
我没有足够的资源来训练深度学习分类模型,例如快速眩光检测
我按顺序尝试了以下几件事:
使用 OpenCVcv2.minMaxLoc函数进行明亮区域检测,但无论如何它总是返回该区域,而且对于我的图像类型来说,大多数情况下它都会失败。
这段代码使用了Clahe调整,但问题是它是删除而不是检测
我发现的最终下面的代码是我所需要的,但有人可以帮助我使其变得健壮。例如,使用这些阈值/更改它们/或使用二值化、闭合(通过扩张增加白色区域,然后通过侵蚀去除黑色噪声),以便将这些阈值推广到所有人。
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)
以下是一些例子:

我正在尝试实施谷歌的 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) Chroma当我使用withLangchain和OpenAIembeddings时,我可以看到除文档的嵌入之外的所有内容。它总是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 ×5
keras ×4
tensorflow ×4
ocr ×2
pytorch ×2
tesseract ×2
tf.keras ×2
chromadb ×1
image ×1
langchain ×1
nlp ×1
openai-api ×1
opencv ×1
python-3.x ×1
tesseract.js ×1