我想知道我的模型的特异性和敏感性.目前,我正在评估所有时期后的模型: from sklearn.metrics import confusion_matrix predictions = model.predict(x_test) y_test = np.argmax(y_test, axis=-1) predictions = np.argmax(predictions, axis=-1) c = confusion_matrix(y_test, predictions) print('Confusion matrix:\n', c) print('sensitivity', c[0, 0] / (c[0, 1] + c[0, 0])) print('specificity', c[1, 1] / (c[1, 1] + c[1, 0])) 这种方法的缺点是,我只能得到我关心的培训完成后的输出.宁愿每10个时期左右获取指标. btw:尝试 metrics=[]在这里.可
以下是关于 tensorflow 的编程技术问答
它被许多用户引用为切换到Pytorch的原因,但是我还没有找到牺牲最重要的实用质量,速度,急切执行的理由/解释. 以下是代码基准性能,TF1与TF2- TF1在 47%至276%的任何位置运行. 我的问题是:在图或硬件级别上,这是什么显着放缓? 寻找详细的答案 - 已经熟悉广泛的概念. 相关的git specs :CUDA 10.0.130,CUDNN 7.4.2,PYTHON 3.7.4,Windows 10,GTX 1070 基准结果: update :在下面的代码下禁用急切的执行 帮助.但是,行为不一致:有时以图形模式运行有很大的帮助,其他时间则相对于急切的慢. . 基准代码: # use tensorflow.keras... to benchmark tf.keras; used GPU for all above benchmarks from keras.layers import Input, Dense, LSTM, B
我一直在尝试优化我的计算;对于我尝试过的大多数操作,tensorflow的速度要快得多.我正在尝试执行一个相当简单的操作...转换一个矩阵(将每个值乘以1/2,然后将1/2添加到该值). 在@mrry的帮助下,我能够在tensorflow中进行这些操作.但是令我惊讶的是,numpy方法的速度明显更快?! tensorflow对于数据科学家来说似乎是一种非常有用的工具,我认为这可以有助于阐明其使用和优势. 我不是以最有效的方式使用tensorflow数据结构和操作吗?我不确定非tensorflow方法如何更快.我正在使用2012年中期MacBook Air 4GB RAM trans1是tensorflow版本,而trans2为numpy. DF_VAR是Pandas DataFrame对象 import pandas as pd import tensorflow as tf import numpy as np def trans1(DF_var):
tl; dr是动态选择张量的某些条目的最有效方法. 我正在尝试 enmart 在tensorflow中的语法GCN .基本上,我需要为每个标签具有不同的权重矩阵(让这个问题忽略偏见),然后在每个运行使用的相关条目时选择稀疏矩阵(对于每个条目,最多都有一个标签在一个方向上,大部分没有边缘,所以甚至没有). 更具体地说,当我具有标记边缘的稀疏矩阵(零一个)时,在掩模中使用它,稀疏的密度张量乘法或可能只是使用正常乘法(我猜不是后者,但是为了简单起见,在示例中使用它) 示例: units = 6 # output size x = ops.convert_to_tensor(inputs[0], dtype=self.dtype) labeled_edges = ops.convert_to_tensor(inputs[1], dtype=self.dtype) edges_shape = labeled_edges.get_shape(
问题描述 i具有形状n x r x c的3D numpy阵列,称为data,即n样品,r行和c列.我想获得沿列的直方图,以进行样品和行的每种组合.但是bin边缘(请参阅我的问题是如何有效计算直方图? 有效但缓慢的解决方案 使用numpy.histogram,我能够提出一个工作速度但相当缓慢的解决方案,如下所示代码片段 ``` Get dummy data N: number of samples R: number of rows (or kernels) C: number of columns (or pixels) S: number of bins ``` import numpy as np N, R, C, S = 100, 50, 1000, 10 data = np.random.randn(N, R, C) # for each row/kernel, pool pixels of all samples p
我正在使用训练有素的模型进行预测(仅CPU).我观察到,在Tensorflow和带有张量的后端的Keras上,与单个样本相比,使用一批样品时,每个样品的预测时间要低得多.此外,随着批处理大小的增加,每个样本的时间似乎下降到内存施加的限制.例如,在纯张量流上,单个样品的预测需要〜1.5秒,在100个样品上,在1000个样本上是〜17秒(每个样品时间〜0.17s),是〜93秒(每个样品时间〜0.093S) ). 这是正常行为吗?如果是这样,对此是否有直观的解释?我想这可能与初始化图表有关,但我需要一些澄清.另外,为什么我们增加预测样本数量时,为什么每个样本时间会降低?在我的用例中,我必须对单个样本进行可用时预测.因此,显然,如果这是事情的工作方式,我将失去很多速度. 事先感谢您的帮助. 编辑:我正在添加一个最小的工作示例.我的模型有一个图像输入和4个向量输入,该模型产生了4个输出.我正在将所有输入初始化为0进行速度测试(我想实际值对速度无关紧要吗?).初始化时间和推理时间分
当我在最强大的AWS GPU实例上运行Python代码(使用1或8 x Tesla v100 16mbaka.p3.x2large或p3.16xlarge)它们都比我的Dell XPS快2-3倍GEFORCE 1050-TI笔记本电脑? 我正在使用Windows,Keras,Cuda 9,Tensorflow 1.12和最新的NVIDIA驱动程序. 当我通过GZU检查GPU负载时,GPU Max.每次以43%的负载运行.控制器以最大运行. 100%... 我使用的数据集是JSON格式的矩阵,文件位于10TB的Nitro驱动器上,最大64.000 IOPS.无论该文件夹是否包含10TB,1TB或100MB ...训练仍然非常慢? 所有建议都非常欢迎! 更新1: 来自TensorFlow文档: " 要启动输入管道,您必须定义一个源.例如,要从内存中的某些张量构建数据集,可以使用tf.data.dataset.from_tensors()或tf.dat
我正在计算numpy中的平均值和标准偏差.为了提高性能,我在TensorFlow中尝试了相同的操作,但张量速度至少慢约10倍.我在TensorFlow(下面的代码)中尝试了2种方法.第一种方法使用tf.nn.moments(),该方法具有错误,导致其有时返回差异的负值.在第二种方法中,我通过其他TensorFlow函数计算方差. 我尝试了仅CPU,而GPU; numpy总是更快. 我使用time.time()而不是time.clock(),以测量使用GPU时的壁锁时间. 为什么张量较慢?我认为这可能是由于将数据传输到GPU中,但是对于很小的数据集(在其中传输时间应该可以忽略不计)以及仅使用CPU时,TF甚至较慢.这是由于初始化tf的开销时间吗? import tensorflow as tf import numpy import time import math class Timer: def __enter__(self): sel
i具有单个Dense层的模型: model = tf.keras.Sequential([tf.keras.layers.Dense(2)]) model.build(input_shape=(None, None, 25)) i在float32中构造一个单个输入向量: np_vec = np.array(np.random.randn(1, 1, 25), dtype=np.float32) vec = tf.cast(tf.convert_to_tensor(np_vec), dtype=tf.float32) 我想将其馈送到我的模型以进行预测,但它非常慢. 如果我打电话predict或__call__与在numpy中进行相同操作相比,需要很长时间. 呼叫%timeit model.predict(vec): 10循环,最佳3:21.9 ms/loop 将模型称为%timeit model(vec, training=False): 100
我正在学习这本书的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) ....
我正在使用TensorFlow,我想加快预测 通过同时 CPU和一个GPU. 我尝试创建2个不同的线程,以供应两个不同的TensorFlow会话(一个在CPU上运行,另一个在GPU上运行).每个线程都会在一个循环中为固定数量的批量(例如,如果我们有100批的总体批次,我想为CPU分配20批CPU,而GPU分配了80个批次,或者在GPU上分配了20个批次,或者两者的任何可能组合)并结合了结果.如果拆分是自动完成的. 但是,即使在这种情况下,似乎批次也以同步方式喂食,因为即使是向CPU发送很少的批次并计算GPU中的所有其他批次(带有GPU作为瓶颈),我也观察到了整体相对于仅使用GPU进行的测试,预测时间总是更高的. 我希望它会更快,因为当只有GPU工作时,CPU使用率约为20-30%,因此可以使用一些CPU来加快计算. 我读了很多讨论,但它们都与多个GPU有关,而不是在GPU和CPU之间进行的. . 这是我编写的代码的示例:tensor_cpu和tensor_gp
我是Ubuntu和GPU的新手,最近在我们的实验室中使用了带有Ubuntu 16.04和4 Nvidia 1080TI GPU的新PC.该机器还具有i7 16核心处理器. 我有一些基本问题: 张量为GPU.然后我想,它会自动优先使用GPU使用?如果是这样,它是一起使用全部4个还是使用1,然后在需要时招募另一个? 我可以实时监视训练期间的GPU使用/活动吗? 我完全理解这是基本的硬件东西,但是对这些特定问题的明确答案将很棒. 编辑: 基于此输出 - 这确实说明我的每一个GPU上几乎所有内存都在使用? 解决方案 TensorFlow自动不利用所有GPU,它将仅使用一个GPU,特别是首先使用GPU /gpu:0 您必须编写多GPU代码才能利用所有可用的GPU. p> 每0.1秒检查使用一次 watch -n0.1 nvidia-smi 其他解决方案 尝试此命令: nvidia-smi --query-gpu=uti
我很难确切地理解为什么GPU和CPU速度与小型网络相似(CPU有时更快),而GPU的尺寸较大的网络更快.问题底部的代码在i7-6700k上以103.7s运行,但是当使用TensorFlow-GPU时,该代码在29.5秒内运行. 但是,当我训练一个具有100个隐藏神经元的网络时,而不是如下示例,我在使用GPU时会得到约20秒,而使用CPU时〜15秒. . 我在另一个堆栈溢出答案上阅读了CPU-> GPU转移需要很长时间,我假设这是指在GPU上加载数据示例. 有人可以解释为什么会发生这种情况,并且可能会引用我可以做出的一些更改以最大化速度? import numpy as np import tensorflow as tf import keras from keras.models import Sequential from keras.utils import np_utils from keras.layers.core import Dense, Activ
我是第一次尝试GPU计算,当然希望能够大幅加速.但是,有了TensorFlow中的一个基本示例,实际上更糟: 在CPU上:0,十个运行中的每一个平均需要2秒,GPU:0需要2.7秒,而GPU:1比CPU差50%,比CPU差3秒. . 这是代码: import tensorflow as tf import numpy as np import time import random for _ in range(10): with tf.Session() as sess: start = time.time() with tf.device('/gpu:0'): # swap for 'cpu:0' or whatever a = tf.constant([random.random() for _ in xrange(1000 *1000)], shape=[1000, 1000], name='a'
系统信息 您正在使用的模型的顶级目录是什么: object_detection/ssd_ineption_v2 我是否编写了自定义代码(而不是使用TensorFlow中提供的库存示例脚本): no OS平台和分布(例如Linux Ubuntu 16.04): ubuntu 16.04 张紧流从(源或二进制)安装:二进制 TensorFlow版本(下面使用命令): 1.2.1 bazel版本(如果从源头编译): no cuda/cudnn版本: cuda 8.0 GPU模型和内存: Quadro M6000 24GB 在自定义数据集中训练SSD_Inception_V2模型后,我想将其用于推断.由于推理应稍后在没有GPU的设备上运行,因此我仅用于CPU进行推理.我调整了opject_detection_tutorial.ipynb来测量推理的时间,并让以下代码在视频中的一系列图像上运行. with detection_graph.as_default
我已经使用了TensorFlow一段时间了.最近,我的脚本非常缓慢(> 80秒)(import tensorflow,它一直都在花(所有其他Libs和Ops都在运行 我可能有跟踪,但是我不知道该怎么办:当我键盘间隔(strg+c)在80秒导入期间的执行时,通常这是出现的: Traceback (most recent call last): File "/.../py_env/tf_unet/lib/python3.5/site.py", line 703, in main() File "/.../py_env/tf_unet/lib/python3.5/site.py", line 694, in main execsitecustomize() File "/.../py_env/tf_unet/lib/python3.5/site.py", line 548, in execsitecustomize import s
我试图估计我的凯拉斯模型的预测时间,并意识到了一些奇怪的东西.除了正常情况下,偶尔还需要很长时间才能提出一个预测.不仅如此,模型运行时间越长,这些时间也会增加.我添加了一个最小的工作示例来重现错误. import time import numpy as np from sklearn.datasets import make_classification from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten # Make a dummy classification problem X, y = make_classification() # Make a dummy model model = Sequential() model.add(Dense(10, activation='relu',name='input',input_s
请原谅这个问题的广泛性.也许一旦我知道更多,也许我可以更具体地问. 我有张力量的性能敏感片段.从对GPU编程了解的人的角度来看,我想知道哪些指南或策略将是优化我的代码的"开始的好地方". (单GPU) 也许甚至可以读取在每个TensorFlow OP上花费了多长时间的时间... 我有一个模糊的理解 分配给CPU而不是GPU时,某些操作的速度更快,但尚不清楚哪个 我在a a 中读到了一个名为" eeg"的Google软件 可能有一天开放的纸张. 我可能还不知道其他常见因素. 解决方案 我想给出有关如何使用时间轴对象以获取图中每个节点执行时间的更完整的答案: 您使用经典sess.run()但指定参数options和run_metadata 然后,您可以使用run_metadata.step_stats data 创建一个时间表对象 这是示例代码中的: import tensorflow as tf from tensorflow
从理论上讲,预测应该是恒定的,因为权重具有固定的尺寸.编译后如何使速度恢复(无需删除优化器)? 请参阅关联的实验: 解决方案 更新-1/15/2020 :当前小批量尺寸的最佳实践应直接将输入输入到模型 - 即火车/推理,model(x, training=False).根据最新提交,现在是我还没有对这些进行基准测试,但是根据 git讨论,也值得尝试predict_on_batch() - 尤其是在TF 2.1中进行的改进. 最终的罪魁祸首:self._experimental_run_tf_function = True.是但这实际上还不错. 到任何TensorFlow Devs阅读:清理您的代码.一团糟.它违反了重要的编码实践,例如一个函数可以做一件事; _process_inputs对 lot 的作用远不止"过程输入",对于_standardize_user_data. "我的薪水还不够" - 但是您 do 付款,在理解自己的东西的额外时间里,以及用户填充您的问题
执行"导入tensorflow"时错误(TensorFlow安装错误Windows 10): 通过在命令提示符下键入 pip3安装tensorflow 成功安装. (我同时安装了Python 2.7.11和Python 3.5.2,但是我正在为Python 3安装TensorFlow(使用 pip3 )).这是CPU安装,而不是GPU.当我尝试执行"导入TensorFlow"时,它会产生以下错误.我也检查了DLL文件. C:\ Windows \ syswow64 \ msvcp140.dll文件存在.请帮助. Traceback (most recent call last): File "C:\Users\acer\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 18, in swig_impor