Li's Bioinfo-Blog
  • |
  • 主页
  • 分类
  • 标签
  • 归档
  • 关于
  • 搜索
Home » 分类

📖 生信数据分析--分析流程,工具包等

D2L--第八章循环神经网络

1. 序列模型 1.1 自回归模型 (1)自回归模型:对于一个包含T个’时间’节点的输入序列,若预测其中的第t个数据,则依赖于该节点前面的观察数据 ...

Create:&nbsp;<span title='2024-08-11 00:00:00 +0000 UTC'>2024-08-11</span>&nbsp;|&nbsp;Update:&nbsp;2024-08-11&nbsp;|&nbsp;Words:&nbsp;7871&nbsp;|&nbsp;16 min&nbsp;|&nbsp;Lishensuo

D2L--第九章现代循环神经网络

1. 门控循环单元(GRU) 传统的RNN在处理长序列时会遇到梯度消失或梯度爆炸的问题。为了解决这些问题,引入了门控机制的变种,如长短时记忆网络(LSTM, long short-term memory)和门控循环单元(GRU, gated recurrent unit)。GRU是LSTM的一个简化版本,它通过合并某些门并减少参数数量来提高效率。 ...

Create:&nbsp;<span title='2024-08-11 00:00:00 +0000 UTC'>2024-08-11</span>&nbsp;|&nbsp;Update:&nbsp;2024-08-11&nbsp;|&nbsp;Words:&nbsp;8150&nbsp;|&nbsp;17 min&nbsp;|&nbsp;Lishensuo

D2L--第十章注意力机制与Transformer

1. 注意力提示 1.1 生物学的注意力提示 如下的观察实验: 受试者的注意力往往首先被颜色鲜艳的红色咖啡杯吸引(非自主性); 客观存在的,对于观察者的吸引特征。 喝完咖啡,处于兴奋状态的大脑经思考后,相比看报等,可能更想要读一本书(自主性权重更高); 在受试者的主观意愿推动下所做的决定。 ...

Create:&nbsp;<span title='2024-08-17 00:00:00 +0000 UTC'>2024-08-17</span>&nbsp;|&nbsp;Update:&nbsp;2024-08-17&nbsp;|&nbsp;Words:&nbsp;10698&nbsp;|&nbsp;22 min&nbsp;|&nbsp;Lishensuo

D2L--第十四及十五章BERT模型

1. 基础介绍 BERT(来自Transformers的双向编码器表示)基于Transformer编码器进行预训练(Pre-train),从而对输入词元进行上下文表示。 而在针对具体的自然语言处理任务的训练(Fine-tuning)时,对预训练Transformer编码器的所有参数进行微调,而额外的输出层将从头开始训练。 2. 输入表示 BERT输入序列的Embedding嵌入,表示为词元嵌入、段嵌入和位置嵌入的矩阵加和。 ...

Create:&nbsp;<span title='2024-08-17 00:00:00 +0000 UTC'>2024-08-17</span>&nbsp;|&nbsp;Update:&nbsp;2024-08-17&nbsp;|&nbsp;Words:&nbsp;6809&nbsp;|&nbsp;14 min&nbsp;|&nbsp;Lishensuo

D2L--第十一及十二章优化算法&多GPU并行

在深度学习中,优化算法是训练模型的关键部分,它们用于更新网络的参数以最小化损失函数。 由于优化算法的目标函数通常是基于训练数据集的损失函数,因此优化的目标是减少训练误差。 NOTE: 深度学习的最终目标是减小泛化误差,所以在关注优化算法的同时,也要注意过拟合。 ...

Create:&nbsp;<span title='2024-08-24 00:00:00 +0000 UTC'>2024-08-24</span>&nbsp;|&nbsp;Update:&nbsp;2024-08-24&nbsp;|&nbsp;Words:&nbsp;4818&nbsp;|&nbsp;10 min&nbsp;|&nbsp;Lishensuo

深度学习--GAN基础

2014年论文:https://proceedings.neurips.cc/paper_files/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf Pytorch DCGAN实现:https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html Other (e.g. cGAN):https://github.com/gordicaleksa/pytorch-GANs 1. 简介 GAN (Generative Adversarial Networks, 生成对抗网络) 于2014年由Ian等提出。简单来说,GAN主要包含两个模型: ...

Create:&nbsp;<span title='2024-09-03 00:00:00 +0000 UTC'>2024-09-03</span>&nbsp;|&nbsp;Update:&nbsp;2024-09-03&nbsp;|&nbsp;Words:&nbsp;2788&nbsp;|&nbsp;6 min&nbsp;|&nbsp;Lishensuo

Hugging Face(1)-NLP basic

Hugging Face是一家专注于自然语言处理(NLP)和人工智能(AI)的公司,可以认为是AI领域的Github。(下面简称HF) 一方面整理、收集了NLP等AI任务常用的数据集,预训练模型; 另一方面提供系列工具库,用以高效地训练AI模型。具体包括如下几个核心库。 Transformers Datasets Tokenizers 1. 获取模型/数据集 HF提供了大量的公开AI数据集以及预训练数据集,同时也提供了下载的方式 ...

Create:&nbsp;<span title='2024-10-16 00:00:00 +0000 UTC'>2024-10-16</span>&nbsp;|&nbsp;Update:&nbsp;2024-10-16&nbsp;|&nbsp;Words:&nbsp;2461&nbsp;|&nbsp;5 min&nbsp;|&nbsp;Lishensuo

Hugging Face(3)-Tokenizer库

https://huggingface.co/docs/tokenizers/quicktour tokenizer库的处理流程一般包括如下四步—— Normalizers: 文本句预处理,使规范化 Pre-tokenizers: 将句子初步拆分为单元词 Model:得到最终的分词token结果,及其对应id编号 Post-Processors: 添加特殊词元标记 1. 训练分词器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 from tokenizers import Tokenizer # (1) 选择一种分词模型,并创建实例 from tokenizers.models import BPE tokenizer = Tokenizer(BPE(unk_token="[UNK]")) from tokenizers.trainers import BpeTrainer trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"]) # (2) 设置预分词器,这里按空白字符分割文本 from tokenizers.pre_tokenizers import Whitespace tokenizer.pre_tokenizer = Whitespace() # (3) 基于语料库,进行分词训练 copus_file = ["datasets/wikitext-103-raw-v1/wiki_train.csv"] tokenizer.train(copus_file, trainer) # (4) 保存并加载 tokenizer.save("datasets/wikitext-103-raw-v1/tokenizer-wiki.json") tokenizer = Tokenizer.from_file("datasets/wikitext-103-raw-v1/tokenizer-wiki.json") type(tokenizer) # tokenizers.Tokenizer # 与直接从预训练模型中提取的分词器类型不太一样 from transformers import AutoTokenizer tokenizer2 = AutoTokenizer.from_pretrained("datasets/bert-base-uncased") type(tokenizer2) # transformers.models.bert.tokenization_bert_fast.BertTokenizerFast tokenizers库提供了4种常见的子词分词方法。BPE通过迭代地合并最频繁的字符或子词对来构建词汇表,常用于GPT 和 RoBERTa 等模型;WordLevel基于完整词的分词方法,使用一个固定的词汇表,未登录词通常被标记为 [UNK]。此外还有Unigram以及WordPiece。 ...

Create:&nbsp;<span title='2024-10-16 00:00:00 +0000 UTC'>2024-10-16</span>&nbsp;|&nbsp;Update:&nbsp;2024-10-16&nbsp;|&nbsp;Words:&nbsp;1144&nbsp;|&nbsp;3 min&nbsp;|&nbsp;Lishensuo

Hugging Face(2)-Datasets库

https://huggingface.co/docs/datasets/index A Dataset provides fast random access to the rows, and memory-mapping so that loading even large datasets only uses a relatively small amount of device memory. But for really, really big datasets ( > 100G) that won’t even fit on disk or in memory, an IterableDataset allows you to access and use the dataset without waiting for it to download completely! https://huggingface.co/learn/nlp-course/chapter5/4?fw=pt#streaming-datasets https://huggingface.co/docs/datasets/about_mapstyle_vs_iterable 1. 读取 1.1 以Json文件读取为例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ## 预先下载解压到本地的datasets文件夹 # wget https://github.com/crux82/squad-it/raw/master/SQuAD_it-train.json.gz # wget https://github.com/crux82/squad-it/raw/master/SQuAD_it-test.json.gz # gzip -dkv SQuAD_it-*.json.gz from datasets import load_dataset squad_it_dataset = load_dataset("json", data_files="./datasets/SQuAD_it-train.json", field="data") # field参数为JSON文件特有,用于指定 JSON 文件中包含实际数据的字段名 squad_it_dataset # 默认读取为train split squad_it_dataset.keys() # dict_keys(['train']) squad_it_dataset # DatasetDict({ # train: Dataset({ # features: ['title', 'paragraphs'], # num_rows: 442 # }) # }) 1.2 JSON的其它形式读取 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # (1) 同时读取两个split data_files = {"train": "SQuAD_it-train.json", "test": "SQuAD_it-test.json"} squad_it_dataset = load_dataset("json", data_files=data_files, field="data") # (2) 读取gz压缩格式 data_files = {"train": "SQuAD_it-train.json.gz", "test": "SQuAD_it-test.json.gz"} squad_it_dataset = load_dataset("json", data_files=data_files, field="data") # (3) 远程读取 url = "https://github.com/crux82/squad-it/raw/master/" data_files = { "train": url + "SQuAD_it-train.json.gz", "test": url + "SQuAD_it-test.json.gz", } squad_it_dataset = load_dataset("json", data_files=data_files, field="data") data_files可以为每个split指定多个文件,https://huggingface.co/docs/datasets/loading ...

Create:&nbsp;<span title='2024-10-16 00:00:00 +0000 UTC'>2024-10-16</span>&nbsp;|&nbsp;Update:&nbsp;2024-10-16&nbsp;|&nbsp;Words:&nbsp;1415&nbsp;|&nbsp;3 min&nbsp;|&nbsp;Lishensuo

Torchtext构建Vocab词表

torchtext.vocab 1 from torchtext.vocab import vocab 1. 定义词汇表 基于词元的频率统计表,OrderedDict 对象 1 2 3 4 vocab(ordered_dict = , #一个 OrderedDict 对象,包含词汇和它们的频率。 min_freq = 1, #指定词汇表中词出现的最小频率。 specials = None, #一个列表,包含特殊标记(如 <unk>, <pad>, <bos>, <eos> 等)。 special_first = True) #一个布尔值,决定特殊标记是否在词汇表的开头。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from collections import Counter, OrderedDict counter = Counter(["a", "a", "b", "b", "b"]) counter # Counter({'b': 3, 'a': 2}) sorted_by_freq_tuples = sorted(counter.items(), key=lambda x: x[1], reverse=True) sorted_by_freq_tuples # [('b', 3), ('a', 2)] ordered_dict = OrderedDict(sorted_by_freq_tuples) # OrderedDict([('b', 3), ('a', 2)]) v1 = vocab(ordered_dict) # Vocab() 直接基于可迭代对象 1 2 3 4 5 6 7 build_vocab_from_iterator( iterator = , # Iterator used to build Vocab. Must yield list or iterator of tokens. min_freq = , specials = , special_first = , max_tokens =None #最多引入多少个词元 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from torchtext.vocab import build_vocab_from_iterator # 定义一个简单的迭代器 # yield关键字,用于定义生成器函数。惰性取值:按需生成值,而不是一次性生成所有值,适合处理大数据集。 def yield_tokens(data_iter): for text in data_iter: yield text.split() # 示例数据 data = ["this is a sentence", "this is another sentence"] # 构建词汇表 v2 = build_vocab_from_iterator(yield_tokens(data), min_freq=1, specials=['<unk>', '<pad>'], special_first=True) ### 直接使用token list作为输入 token_lists = [ ["this", "is", "a", "sentence"], ["this", "is", "another", "sentence"] ] # 构建词汇表 v3 = build_vocab_from_iterator(token_lists) 2. 查询词汇表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 1. 查看词元的索引 v1['a'], v1['b'] # 2. 设置当查询不在词汇表的新词元时,返回的索引 v2.set_default_index(v2[unk_token]) v2['sss'] # 3. 查询索引对应的词元 v2.get_itos()[:3] # v2['out of vocab'] is v2[unk_token] v2.get_stoi() # {'a': 5, # 'this': 4, # 'another': 6, # 'sentence': 3, # 'is': 2, # '<pad>': 1, # '<unk>': 0}

Create:&nbsp;<span title='2024-10-16 00:00:00 +0000 UTC'>2024-10-16</span>&nbsp;|&nbsp;Update:&nbsp;2024-10-16&nbsp;|&nbsp;Words:&nbsp;508&nbsp;|&nbsp;2 min&nbsp;|&nbsp;Lishensuo
« Prev Page Next Page »
© 2025 Li's Bioinfo-Blog Powered by Hugo & PaperMod
您是本站第 位访问者,总浏览量为 次