ValueError: as_list() 没有在一个未知的TensorShape上定义
我在此示例上工作 web 这是我在这个之后得到的 jobs_train, jobs_test = jobs_df.randomSplit([0.6, 0.4]) >>> zuckerberg_train, zuckerberg_test = zuckerberg_df.randomSplit([0.6, 0.4]) >>> train_df = jobs_train.unionAll(zuckerberg_train) >>> test_df = jobs_test.unionAll(zuckerberg_test) >>> from pyspark.ml.classification import LogisticRegression >>> from pyspark.ml import Pipeline >>> from sparkdl import DeepImageFeaturizer >>> featurizer = DeepImageFeaturizer(inpu
10 2024-03-30
编程技术问答社区
如何使用贝尔特来写长句?
我试图将给定的文本分类为新闻,点击诱饵或其他人.我对培训的文本很长. 解决方案 您可以在论文中找到您类似问题的答案 - 分类/63413589#63413589">在这里. ,如果您谈论的是新闻或点击诱饵的文本,为什么您认为同一文档的块将具有不同的标签?您可以将文本缩小并遵循如何用于文本分类的微调bert?.作者表明,Head+Tail截断具有很高的精度.由于 github 页面和文档并取得了良好的结果. 您可以选择具有标志的截断方法 -trunc_medium 带有选项: -2表示仅头(保留第一个512代币), -1表示仅尾巴(保留最后512个令牌), 0是指头半 +尾巴半(例如:head256 + tail256), 其他自然数字k表示HEAD-K + TAIL-REST(例如:Head-K + Tail-(512-K)). 然后,您可以汇总成分的结果,创建长文本的汇总嵌入. 在这里,我还将继续讨论与Bert Reffering to Big
2 2024-03-30
编程技术问答社区
BERT输出解释
Bert Excoder输出的键是default,encoder_outputs,pooled_output和sequence_output 据我所知,encoder_outputs是每个编码器的输出,pooled_output是全局上下文的输出,sequence_output是每个令牌的输出上下文(如果我错了,请纠正我).但是什么是default?您能给我每个人的更详细说明吗? 这是Encoder的链接 解决方案 TensorFlow docs 为您提供很好的解释.正在问: BERT模型返回带有3个重要键的地图:POLED_OUTPUT,sequence_output,encoder_outputs: pooled_output表示每个输入序列整体.形状是 [batch_size,h].您可以将其视为整个嵌入 电影评论. sequence_output在上下文中表示每个输入令牌.形状 是[batch_size,seq_length,h].您可以将其视为上下
6 2024-03-30
编程技术问答社区
在一个小型定制语料库上预训练语言模型
我很好奇是否可以在文本生成中使用转移学习,并在特定类型的文本上重新培训/预培训. 例如,具有预先训练的BERT模型和一小部分医学(或任何"类型")文本,制作一个能够生成医学文本的语言模型.假设您没有大量的"医学文本",这就是为什么您必须使用转移学习. 将其作为管道,我将其描述为: 使用预先训练的BERT令牌. 从我的新文本中获取新的代币并将其添加到现有的预训练的语言模型(即Vanilla Bert)中. 通过合并的令牌仪重新训练定制语料库上的预训练的BERT模型. 生成类似于小型自定义语料库中文本的文本. 这个听起来很熟悉吗?拥抱脸有可能吗? 解决方案 我没有听说过您刚才提到的管道.为了为您的用例构造LM,您基本上有两个选项: 在您自己的语料库上进一步培训BERT(-base/-large)模型.此过程称为 domain-adaption ,如此最近的论文.这将使BERT模型的学习参数适应您的特定领域(Bio/Medical Text).尽管如
BERT的输出不是确定性的
BERT输出不是确定性的. 我希望当我提出相同的输入时,输出值是确定性的,但是我的bert模型在变化.听起来很尴尬,一次返回了两次相同的值.也就是说,一旦另一个值出现,相同的值就会出现并重复. 如何使输出确定性? 让我显示我的代码片段. 我使用下面的模型. 对于BERT实施,我使用了HuggingFace实现的Bert Pytorch实现.这是Pytorch地区的Fameous Model RI实现. [链接] tokenizer = BertTokenizer.from_pretrained(self.bert_type, do_lower_case=self.do_lower_case, cache_dir=self.bert_cache_path) pretrain_bert = BertModel.from_pretrained(self.bert_type, cache_dir=self.bert_cache_path) bert_config = pretrain_be
2 2024-03-30
编程技术问答社区
HuggingFace' BertTokenizerFast.from_pretrained('bert-base-uncased') 中的 max_length、padding 和 truncation 参数如何工作?
我正在处理文本分类问题,我想将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' 那么这三个论点将做什么?我认为如下: 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转化器使用[CLS]标记进行分类,而不是所有标记的平均值?
我正在对Bert体系结构进行实验,并发现大多数微调任务将最终隐藏层作为文本表示形式,后来他们将其传递给其他模型以进行进一步的下游任务. 伯特的最后一层看起来像这样: 我们在每个句子的[cls] token中: 我在此 huggingface问题, dataScience论坛问题, github问题大多数数据科学家给出了此解释: bert是双向的,[Cls]编码包括所有 通过多层的所有令牌的代表信息 编码过程. [Cls]的表示是个体 不同的句子. 我的问题是,为什么作者忽略了其他信息(每个令牌的向量),并以平均,max_pool或其他方法来使用所有信息,而不是使用[Cls]代币进行分类? 这个[Cls]令牌有助于与所有令牌向量的平均值进行比较? 解决方案 BERT主要用于转移学习,即在特定于任务的数据集上进行填充.如果平均状态平均,则每个状态的平均重量相同:包括停止单词或其他与任务无关的内容.使用自我注意力(如BERT中的所有内容)计算[CLS
16 2024-03-30
编程技术问答社区
为特定领域微调伯特(无监督的)。
我想对与特定域相关的文本进行微调(在我的情况下与工程有关).由于我没有任何标签或其他任何标签,因此应无监督.这可能吗? 解决方案 您实际上想要的是继续从特定域中的文本进行预训练BERT.在这种情况下,您要做的是继续训练该模型作为蒙版语言模型,但在特定于域的数据上. 您可以使用
0 2024-03-30
编程技术问答社区
如何为MLM和NSP在一个新的领域从头开始训练BERT?
我正在尝试使用我自己的数据集使用HuggingFace库从头开始训练BERT模型.我想以一种具有原始BERT模型的确切体系结构的方式训练该模型. 在原始论文中,它指出:" bert是针对两个任务进行训练的:预测随机掩盖的令牌(MLM),并预测两个句子是否相互关注(NSP). Scibert遵循与Bert相同的架构,但在科学文本上进行了预估." 我试图了解如何在上面的两个任务上训练模型.目前,我将模型初始化为以下: from transformers import BertForMaskedLM model = BertForMaskedLM(config=config) 但是,它只是用于传销,而不是NSP.我如何也可以使用NSP初始化和训练模型,或者我的原始方法很好? 我的假设是 用BertForPreTraining初始化(对于MLM和NSP)或 在完成BertForMaskedLM培训后, 使同一模型唯一地训练 BertForNextSente
Tensorflow构建量化工具-Bazel构建错误
我正在尝试按照 Pete Warden的博客.但是,在运行以下Bazel构建后,我会收到以下错误消息: bazel build tensorflow/contrib/quantization/tools:quantize_graph ERROR: no such package 'tensorflow/contrib/quantization/tools': BUILD file not found on package path. INFO: Elapsed time: 0.277s 解决方案 我认为发生了什么是该量化工具从贡献中移出并转移到张量核心中.您应该能够使用它: bazel build tensorflow/tools/quantization:quantize_graph
26 2024-03-29
编程技术问答社区
使用贝叶斯优化法对深度学习结构进行超参数优化
我已经构建了用于原始信号分类任务的CLDNN(卷积,LSTM,深神经网络)结构. 每个训练时期的运行约90秒,而超参数似乎很难优化. 我一直在研究优化超参数(例如随机或网格搜索)的各种方法,并发现了有关贝叶斯优化的方法. 尽管我仍然不完全了解优化算法,但我会喂养它会极大地帮助我. 我想问几个有关优化任务的问题. 如何在深层网络上设置贝叶斯优化?(我们要优化的成本函数是什么?) 我要优化的功能是什么?这是N时期之后验证设置的成本吗? Spearmint是这项任务的好起点吗?对此任务还有其他建议吗? 我非常感谢对这个问题的任何见解. 解决方案 尽管我仍然不完全了解优化 算法,我喂食会大大帮助我. 首先,让我简要解释这部分. 贝叶斯优化方法旨在处理多武器强盗问题 .在此问题中,有一个未知的功能,我们可以在任何时候进行评估,但是每个评估成本(直接罚款或机会成本),目标是使用少量试验找到其最大值可能的.基本上,权衡是:您知道一组有限的积分中
2 2024-03-29
编程技术问答社区
Keras w/ Tensorflow中间层的分批提取
我目前正在尝试利用我已经训练的DL模型作为嵌入给给定输入的中间层.下面的代码已经在获得我想要的图层已经有效,但是对于大量输入进行迭代执行此操作非常慢. model = load_model('model.h5') inp = model.input outputs = [layer.output for layer in model.layers] functors = [K.function([inp]+ [K.learning_phase()], [out]) for out in outputs] def text2tensor(text): """Convert string to tensor""" tensor = tokenizer.texts_to_sequences([text]) tensor = pad_sequences(tensor, maxlen=10, padding='pre') return tensor def
12 2024-03-29
编程技术问答社区
图像平均减法与批量规范化的比较-Caffe
我有一个有关Caffe中图像预处理的问题. 当我在咖啡因模型中使用批次正规化层时,在训练阶段开始之前,我的所有培训图像上仍然需要在所有培训图像上进行预处理步骤"均值减法"?还是在批处理层完成? 非常感谢您=) 解决方案 图像含义的减法与batchNoralization不同,用于不同的目的. batchnormitiation将批量归一化,而不是每个图像,并且更常用于保持数据分布良好并与高激活作斗争,从而使其过度拟合.之后,并非每个图像都有0均值,但是批处理的组合具有0均值.只有批处理为1. ,它才会相同 图像平均减法主要用于打击输入空间中的照明变化. > 根据您的特定示例,您可能会通过在输入后应用批处理归一化而不是使用均值减法来获得良好的结果,但是您需要对此进行测试.
8 2024-03-29
编程技术问答社区
在Keras中实现一个多输入的模型,每个人都有不同的样本量(每个人的批次大小不同)。
我目前正在尝试在Keras中实现多输入模型.输入由多个批次组成,每个批次包括不同的样本,但是我得到了"不同的样本".我的实施看起来像这样: 模型网站看起来如下: for s in range(NUM_STREAMS): inp.append(Input(shape=(16,8))) ... 发生错误的站点: history = model.train_on_batch( x=[x for x in X_batch], y=[y for y in y_batch] ) 我遇到的错误是: ValueError: All input arrays (x) should have the same number of samples. Got array shapes: [(6, 16, 8), (7, 16, 8), (6, 16, 8), (6, 16, 8)]
18 2024-03-29
编程技术问答社区
在CNN上,快速损失收敛表示什么?
我正在培训两个不同的DL库(Caffe e Tensorflow)中的两个CNN(Alexnet E GoogLenet).网络是由每个图书馆的开发团队实施的(我将原始Imagenet数据集简化为1个类别的1024张图像 - 但设置了1000个类别以在网络上进行分类. 所以我训练了CNN,变化的处理单元(CPU/GPU)和批次尺寸,并且我观察到损失迅速收敛到接近零(大多数是在完成1个时期之前),就像在此图中一样(Alexnet On on Alexnet On On TensorFlow): 在葡萄牙语中,"épocas"是时代,而" perda"是损失.键中的数字是指批量大小. 重量衰减和初始学习率与我下载的模型中使用的相同,我只更改了数据集和批次尺寸. 为什么我的网络会以这种方式融合,而不像 a>? 解决方案 损失函数比平常嘈杂,并且由于几个原因不会振荡. 主要是因为您只有1个类别,因此(简化一点)网络在每个步骤中都很容易改进,只是通过在所有输入
10 2024-03-29
编程技术问答社区
如果不存在~/.bashrc文件,我怎么能在Google Colab上安装Torch?
我想安装火炬(要在Google Colab上运行此命令,我使用的代码是 %%bash source ~/.bashrc 当我运行这些时,我会得到警告 bash:第1行:/content/.bashrc:没有这样的文件或目录 我还使用此命令查找bashrc !find / -name '*bashrc' 这是我得到的输出 /root/.bashrc /etc/skel/.bashrc /etc/bash.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/skel/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bash.bashrc 我尝试在所有这些路径上运
18 2024-03-28
编程技术问答社区
了解在Pytorch中何时使用python list
基本上是因为此线程讨论 policy_loss = [] for log_prob in self.controller.log_probability_slected_action_list: policy_loss.append(- log_prob * (average_reward - b)) self.optimizer.zero_grad() final_policy_loss = (torch.cat(policy_loss).sum()) * gamma final_policy_loss.backward() self.optimizer.step() 为什么使用此格式的列表可以更新模块的参数,但第一种情况不起作用?我现在很困惑.如果我更改以前的代码policy_loss = nn.ModuleList([]),则会引发异常,说张量浮点不是子模块. 解决方案 您正在误解Module是什么. a Module存储参数并定义了向前通行证的实现. 您可以使
4 2024-03-27
编程技术问答社区
如何检测pytorch中的欠拟合和梯度消失的来源?
如何检测pytorch中消失的梯度的来源? 通过消失的梯度,我的意思是训练损失也不会低于某些值,即使在有限的数据集中也不会降低. 我正在尝试训练一些网络,并且我有上述问题,在这种问题中,我什至无法使网络过度适合,但无法理解问题的根源. 我花了很长时间谷歌搜索这个,并且只找到了防止安装过度的方法,但没有任何内容,但没有适合梯度. 我发现的是: 在这里和我知道,"使网络更大或更复杂"是一种一般建议造成拟合的方法(现在是必需的). 我也知道,非常深的网络可以使它们的梯度消失. 我尚不清楚较大的网络会解决问题,因为正如我刚刚说的那样,它可能会创建自己的问题,而我又一次不知道该如何调试,同时仍然看到大致相同的行为. 将体系结构更改为某些RES-NET可能会有所帮助,但也无能为力,因为该问题不是由网络深度引起的. 死亡的relu可能会导致不足,实际上移至leakyyrelu会有所帮助,但仍然不够. pytorch中拟合的一个调试来源如何,特别是由消
2 2024-03-27
编程技术问答社区
如何转换神经网络的输出并仍然进行训练?
i具有输出output的神经网络.我想在发生损失和倒退之前转换output. 这是我的一般代码: with torch.set_grad_enabled(training): outputs = net(x_batch[:, 0], x_batch[:, 1]) # the prediction of the NN # My issue is here: outputs = transform_torch(outputs) loss = my_loss(outputs, y_batch) if training: scheduler.step() loss.backward()
0 2024-03-27
编程技术问答社区
卷积神经网络不收敛
我一直在观看有关深度学习/卷积神经网络的一些视频和在这里,我试图在C ++中实现我自己的.我试图让我的第一次尝试保持输入数据相当简单,因此想法是区分十字架和一个圆圈,我的数据集约为每张25个(64*64张图像),它们看起来像这样: 网络本身是五层: Convolution (5 filters, size 3, stride 1, with a ReLU) MaxPool (size 2) Convolution (1 filter, size 3, stride 1, with a ReLU) MaxPool (size 2) Linear Regression classifier 我的问题是,我的网络在任何事情上都没有融合.重量似乎都没有改变.如果我运行它,则预测大多保持相同,而不是偶尔的离群值在下一次迭代之前跳跃的异常值. 卷积层训练看起来像这样,删除了一些循环以使其清洁 // Yeah, I know I should change the sha
4 2024-03-27
编程技术问答社区