为什么这个tensorflow培训需要这么长时间?
我正在学习这本书的DRL 深入的加固学习.在第3章中,他们介绍了简单的游戏网格世界(我已经尝试了代码,只需3分钟即可以89%的胜利训练网络(训练后赢得了89场比赛中的89场). 作为练习,我将代码迁移到 tensorflow .所有代码都是在这里. 问题在于,使用我的张量端口,赢得84%的胜利率训练网络需要近2个小时.这两个版本都使用训练的唯一CPU(我没有GPU) 训练损失数字似乎是正确的,而且胜利的速度也(我们必须考虑到游戏是随机的,并且可能具有不可能的状态).问题是整体过程的性能. 我做的事情很大,但是什么? 主要区别在于训练环,在火炬中是: loss_fn = torch.nn.MSELoss() learning_rate = 1e-3 optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) ....
2 2023-05-23
编程技术问答社区
感知器学习算法的参数调控
我有一个问题,试图弄清楚如何为我的感知算法调整参数,以便它在看不见的数据上的性能相对较好. 我已经实现了经过验证的工作感知算法,我想找出一种方法,可以调整迭代的数量和感知率的学习率.这是我感兴趣的两个参数. 我知道,感知者的学习率不会影响算法是否收敛和完成.我试图掌握如何更改n.太快了,它会绕着很多,而且太低,需要更长的时间. 至于迭代次数,我不确定如何确定理想数字. 无论如何,任何帮助都将不胜感激.谢谢. 解决方案 从少量迭代开始(实际上更常规的计数'epochs'而不是迭代 - 'epochs'是指通过所使用的整个数据集的迭代次数训练网络).通过"小",请说大约50个时代.原因是您想查看每个额外训练周期(时代)如何变化的总错误 - 希望它会下降(以下更多有关"总错误"). 显然,您对接下来的额外时期不会导致总误差进一步减少的点(时期数)感兴趣.因此,从少数时期开始,因此您可以通过增加时代来接近该点. 您开始的学习率不应该太细或太粗糙(显然是
2 2023-05-23
编程技术问答社区
PyTorch中的可重复性和性能
文档 确定性模式可能会产生性能影响,具体取决于您的模型. 我的问题是,在这里的性能是什么意思.处理速度或模型质量(即最小损失)?换句话说,当设置手动种子并使模型以确定性的方式执行时,这会导致更长的训练时间直到找到最小的损失,还是比模型是非确定性的损失更少? 为了完整的缘故,我通过设置所有这些属性手动制作模型确定性: def set_seed(seed): torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) torch.backends.cudnn.deterministic = True torch.backends.cudnn.benchmark = False np.random.seed(seed) random.seed(seed) os.environ['PYTHONHASHSEED'] = str(seed) 解决方案 性能是指运
0 2023-05-23
编程技术问答社区
使用TF ImageGenerator训练模型时出现UnidentifiedImageError
我正在运行21250张图像的二进制分类器(总计2类).我的批次大小在425,步骤为50. 运行模型时,我会收到以下错误: UnknownError: 2 root error(s) found. (0) Unknown: UnidentifiedImageError: cannot identify image file Traceback (most recent call last): 据我了解,此处的图像可能是损坏的,或者由于其他原因无法读取图像.有没有办法让培训师跳过无法识别的图像? 请让我知道在我的代码/数据中考虑以解决此问题的其他建议. 解决方案 由于图像是"非型"的图像,可能会发生此错误,尽管您可能会看到它们是.jpeg or .png .jpeg or .png在预处理图像期间,图像实际上以某种方式损坏了.在大型数据集上,我已经无数次面对这个问题.
16 2023-05-22
编程技术问答社区
HuggingFace: ValueError: 预期长度为165的序列在dim 1(得到128)。
我正在尝试根据自己的数据微调BERT语言模型.我已经浏览了他们的文档,但是他们的任务似乎并不是我所需要的,因为我的最终目标是嵌入文本.这是我的代码: from datasets import load_dataset from transformers import BertTokenizerFast, AutoModel, TrainingArguments, Trainer import glob import os base_path = '../data/' model_name = 'bert-base-uncased' max_length = 512 checkpoints_dir = 'checkpoints' tokenizer = BertTokenizerFast.from_pretrained(model_name, do_lower_case=True) def tokenize_function(examples): return to
8 2023-05-22
编程技术问答社区
训练VGG-16需要多少个历时?
我正在使用包含3K图像的数据集训练从头开始的VGG-16型号. 我使用TensorFlow平台和8个无gpu的CPU. 训练率-0.01, 重量衰减-0.0005, 动量-0.9, 批次尺寸-64, 我一直在训练大约三天.但是训练准确性没有变化,在20个时期后约15%-20%.谁能给我一些提示提高准确性的提示? 解决方案 似乎我使用了太大的学习率.或重量衰减无法正常工作.将超级参数更改为 之后 训练率-0.001, 重量衰减-0, 动量-0.9, 批次尺寸-64. eveything很好.现在,在25个时期之后,我可以获得90%的精度.只是为了您的信息.
4 2023-05-19
编程技术问答社区
如何使用数据框重命名图像名称?
我有一个具有file_name 和对应text 的数据框: input_folder --| |--- imgs -- |-- 0.jpg |-- 1.jpg |-- 2.jpg ......... |--- train.jsonl train.jsonl文件具有: {"file_name": "0.jpg", "text": "The Fulton County Grand Jury said Friday an investigation"} {"file_name": "1.jpg", "text": "of Atlanta's recent primary election produced \"no evidence\" that"}
0 2023-05-18
编程技术问答社区
高效的方法来生成完整数据集的石灰解释
正在处理具有1000行和15个功能的二进制分类问题. 当前正在使用Lime来解释每个实例的预测. 我使用以下代码来生成完整测试数据框的说明 test_indx_list = X_test.index.tolist() test_dict={} for n in test_indx_list: exp = explainer.explain_instance(X_test.loc[n].values, model.predict_proba, num_features=5) a=exp.as_list() test_dict[n] = a 这不是有效的.是否有其他方法可以更快地生成解释/获取功能贡献? 解决方案 根据文档所显示的内容,尽管有计划,但目前尚无选项batch divell_instance.这将在较新版本的速度上对 的速度有很大帮助. 似乎最合适的更改以获得更好的速度是减少用于学习线性模型的样品的数量. exp
0 2023-05-18
编程技术问答社区
Keras ImageDataGenerator:为什么我的CNN的输出会反转?
我正在尝试编码CNN,以区分猫和狗. 我已经设置了这样的标签,使得狗:0和猫:1,所以我希望我的CNN如果是狗,如果是猫,则会输出0,如果是猫.但是,它是相反的(当它的猫和狗的1时给出0).请查看我的代码,看看我出错的地方.谢谢 我目前使用jupyter笔记本(内部的所有代码,我都从Jupyter Notebook中复制代码的不同部分) import os import cv2 from random import shuffle import numpy as np from keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from keras.models imp
2 2023-05-17
编程技术问答社区
PyTorch: 动态计算图的关系-填充-数据加载器
据我了解,pytorch的强度应该是它与动态计算图一起使用.在NLP的背景下,这意味着具有可变长度的序列不一定需要填充到相同的长度.但是,如果我想使用pytorch dataLoader,我还是需要对我的序列进行填充,因为数据加载程序只会吸收张量 - 鉴于我作为总体初学者不想构建一些自定义的Collat​​e_fn. . 现在这让我感到奇怪 - 在这种情况下,这是否会消除动态计算图的全部优势? 另外,如果我将序列添加到数据加载器中作为张量,以许多零作为填充令牌(对于单词IDS),它将对我的培训产生任何负面影响,因为Pytorch可能不会优化用于使用衬垫序列的计算(因为整个前提是它可以与动态图中的可变序列长度一起使用),或者根本没有任何区别? 我还将在Pytorch论坛上发布此问题... 谢谢! 解决方案 在NLP的背景下,这意味着具有可变长度的序列不一定需要填充到相同的长度. 这意味着您不需要填充序列除非您正在进行数据批次,否则这是当前在Pytorc
8 2023-05-16
编程技术问答社区
为LSTM-RNN训练填充时间序列子序列
我有一个时间序列的数据集,我将其用作LSTM-RNN的输入,以进行动作预期.时间序列包括30 fps的时间为5秒(即150个数据点),数据表示面部特征的位置/运动. i从数据集中采样较小长度的其他子序列,以便在数据集中添加冗余并减少过度拟合.在这种情况下,我知道子序列的起点和结尾框架. 为了批次训练模型,所有时间序列都需要相同的长度,并且根据文献填充的许多论文不应影响网络的性能. 示例: 原始序列: 1 2 3 4 5 6 7 8 9 10 子序列: 4 5 6 7 8 9 10 2 3 4 5 6 考虑到我的网络正在尝试预测 (这意味着在p(action)>阈值从t = 0到t = t = tmax时,它将预测该动作)填充到哪里有关系吗? 选项1 :零去替换原始值 0 0 0 4 5 6 7 0 0 0 0 0 0 0 0 0 0 8 9 10 0 2 3 4 5 6 0 0 0 0 选项2 :结尾处的所有零 4 5
4 2023-05-16
编程技术问答社区
Tensorflow的缓冲区不足和资源耗尽错误
我正在上高中,我正在尝试做一个涉及神经网络的项目.我正在使用Ubuntu,并尝试使用TensorFlow进行增强学习,但是当我训练神经网络时,我一直会收到很多远处的警告.他们采用ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred的形式.随着培训的进行,此消息越来越频繁地打印到屏幕上.最终,我得到了一个资源避免了Ersederr,该程序将终止.这是完整的错误消息: W tensorflow/core/framework/op_kernel.cc:975] Resource exhausted: OOM when allocating tensor with shape[320000,512] Traceback (most recent call last): File "./train.py", line 121, in loss, _ = model.train(minibatch, gam
6 2023-05-15
编程技术问答社区
为什么我们在训练CNN时要计算图像的平均值?
当我将CAFFE用于图像分类时,它通常会计算图像均值.为什么会这样? 有人说这可以提高准确性,但我不明白为什么会这样. 解决方案 请参阅深度学习中的图像美白技术.实际上,已经证明它提高了准确性,但没有广泛使用. 了解为什么在应用机器学习方法之前有助于指定数据的想法.这有助于将数据保持在相同的范围内.实际上,CNN中现在使用的另一种方法是批准. 其他解决方案 神经网络(包括CNN)是具有数千个参数的模型,我们试图通过梯度下降来优化.这些模型能够通过在节点上具有非线性φ来符合许多不同的功能.没有非线性激活函数,该网络总计崩溃到线性函数.这意味着我们需要针对最有趣的问题的非线性. φ的常见选择是逻辑函数,tanh或relu.所有人都有最有趣的区域左右.这是梯度足够大以快速学习的地方,或者在Relu的情况下根本无法进行非线性.重量初始化方案,例如批次归一化也将节点输入的平均值保持在0. 因此,您可以计算(并减去)图像的平均值,以便第一个计算节点获得"行为良
0 2023-05-12
编程技术问答社区
最佳神经网络优化算法
我正在寻找神经网络优化中的4种最佳算法.我需要名称,任何描述,学习方法和拓扑都非常有帮助. 我认为多层感知器(MLP)是其中之一,但我不确定. 谢谢大家. 解决方案 您的问题确实很广.这很难回答,因为不同的优化器具有其优点和缺点.我要说的是,在当今最好的优化器中,您会发现Nestov Momentum的Adam,RMSProp,Adagrad和SGD.您可以阅读有关这些方法(以及其他方法)在这里. P> 其他解决方案 首先,我同意这个问题确实太广泛了,但是,我想添加一些我个人的统一性,发现对帮助我回答这个问题很有用.在这样做的过程中,我希望这些资源能够帮助其他人对我的帮助.他们在这里是: Sebastian Ruder Mod Yu Yu Zeng的 Anish Singh Walia的讨论在此主题上. 我希望这对某人有帮助.
8 2023-05-12
编程技术问答社区
将值块添加到pytorch的特定位置的张量
我有一个索引列表: indx = torch.LongTensor([ [ 0, 2, 0], [ 0, 2, 4], [ 0, 4, 0], [ 0, 10, 14], [ 1, 4, 0], [ 1, 8, 2], [ 1, 12, 0] ]) 我的张量为2x2块: blocks = torch.FloatTensor([ [[1.5818, 2.3108], [2.6742, 3.0024]], [[2.0472, 1.6651], [3.2807, 2.7413]], [[1.5587, 2.1905], [1.9231, 3.5083]], [[1.6007, 2.1426], [2.4802, 3.0610]], [[1.9087, 2.1021], [2.7781, 3.2282]],
4 2023-05-12
编程技术问答社区
用类先验优化输入图像
我正在尝试实施Google博客条目的第一部分 其他零件或为其他框架提供代码片段.我了解优化先验类的随机输入图像的想法,以及在此来自这个问题以及 etarion 的有用评论,我现在知道您可以将变量列表列出给优化器,而所有其他变量都不会触及.但是,当给优化器作为变量随机图像时,会导致 File "mnist_test.py", line 101, in main optimizer2 = tf.train.AdamOptimizer(learning_rate).minimize(-cost, var_list=[rnd_img]) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/optimizer.py", line 198, in minimize name=name) File "/usr/local/lib/python2.7/dist-packages/tensorfl
0 2023-05-12
编程技术问答社区
如何在Pytorch中打印Adadelta的"实际"学习率
简称: 我在pytorch中使用Adadelta Optimizer时无法绘制LR/Epoch曲线,因为optimizer.param_groups[0]['lr']总是返回相同的值. 详细: adadelta可以随时间推移使用一阶信息和 除了香草随机梯度下降以外的计算开销最少[1]. 在pytorch中,adadelta的源代码在这里 https ://pytorch.org/docs/stable/_modules/torch/optim/adadelta.html#adadelta 由于不需要手动学习学习率,因此,据我所知,我们不必在声明优化器 之后设置任何计划 self.optimizer = torch.optim.Adadelta(self.model.parameters(), lr=1) 检查学习率的方法 current_lr = self.optimizer.param_groups[0]['lr'] 问题是它总是返回
20 2023-05-12
编程技术问答社区
PyTorch: 如何在任何时候改变优化器的学习率(没有LR计划)。
在Pytorch中,是否有可能在动态培训中更改优化器的学习率(我不想事先定义学习率时间表)? 所以假设我有一个优化器: optim = torch.optim.SGD(model.parameters(), lr=0.01) 现在由于我在培训期间进行的一些测试,我意识到我的学习率太高了,所以我想更改它以说0.001.似乎没有一种方法optim.set_lr(0.001),但是有什么方法可以做到吗? 解决方案 因此,学习率存储在optim.param_groups[i]['lr']中. optim.param_groups是可能具有不同学习率的不同权重组的列表.因此,简单地做: for g in optim.param_groups: g['lr'] = 0.001 将做到这一点. **或者,** 如评论中提到的那样,如果您的学习率仅取决于时期号,则可以使用学习率调度程序. 例如(doc的修改示例): torch.optim.l
2 2023-05-12
编程技术问答社区
使用贝叶斯优化法对深度学习结构进行超参数优化
我已经构建了用于原始信号分类任务的CLDNN(卷积,LSTM,深神经网络)结构. 每个训练时期的运行约90秒,而超参数似乎很难优化. 我一直在研究优化超参数(例如随机或网格搜索)的各种方法,并发现了有关贝叶斯优化的方法. 尽管我仍然不完全了解优化算法,但我会喂养它会极大地帮助我. 我想问几个有关优化任务的问题. 如何在深层网络上设置贝叶斯优化?(我们要优化的成本函数是什么?) 我要优化的功能是什么?这是N时期之后验证设置的成本吗? Spearmint是这项任务的好起点吗?对此任务还有其他建议吗? 我非常感谢对这个问题的任何见解. 解决方案 尽管我仍然不完全了解优化 算法,我喂食会大大帮助我. 首先,让我简要解释这部分. 贝叶斯优化方法旨在处理多武器强盗问题 .在此问题中,有一个未知的功能,我们可以在任何时候进行评估,但是每个评估成本(直接罚款或机会成本),目标是使用少量试验找到其最大值可能的.基本上,权衡是:您知道一组有限的积分中
4 2023-05-12
编程技术问答社区
如何在CUDA 10.0下安装tensorflow-gpu 1.12?
我知道tensorflow-gpu==1.12需要CUDA 9.0或更小时,但是我可以在CUDA 10.0上安装TensorFlow吗?可以通过源或使用Bazel? 更新:我尝试从GitHub下载并通过Bazel安装,但我会收到以下错误. Python 3.7.1 (default, Oct 23 2018, 19:19:42) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow Traceback (most recent call last): File "/some-folder/tensorflow-1.12.0/tensorflow/python/platform/self_check.py", line 25, in fro
2 2023-05-11
编程技术问答社区