- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能够按照 Keras Docs: how-can-i-obtain-the-output-of-an-intermediate-layer 中的建议获取所有层的输出/预测
def get_output_of_all_layers(model, test_input):
output_of_all_layers = []
for count, layer in enumerate(model.layers):
# skip the input layer
if count == 0:
continue
intermediate_layer_model = Model(inputs=model.input, outputs=model.get_layer(layer.name).output)
intermediate_output = intermediate_layer_model.predict(test_input)[0]
output_of_all_layers.append(intermediate_output)
return np.array(output_of_all_layers)
但这速度慢得令人难以置信,需要一分多钟(在 6700HQ
和 GTX1070
中,时钟为 ~65s,这高得离谱,对于大约 50 层的模型,推理发生在不到一秒的时间内......!)。我想这是因为它每次都会构建一个模型,将模型加载到内存中,传递输入并获取输出。显然,如果不从其他层获取结果,就无法获得最后一层的输出,如何像上面那样保存它们,而不必创建冗余模型(或以更快、更有效的方式)?
更新:我还注意到这并没有利用我的 GPU,这意味着所有的转换层都由 CPU 执行?为什么它不使用我的 GPU 来实现这个目的?我认为如果使用我的 GPU,花费的时间会少得多。
如何更有效地做到这一点?
最佳答案
按照 Ben Usman 的建议,您可以首先将模型包装在基本的端到端 Model
中,并将其层作为输出提供给第二个 Model
:
import keras.backend as K
from keras.models import Model
from keras.layers import Input, Dense
input_layer = Input((10,))
layer_1 = Dense(10)(input_layer)
layer_2 = Dense(20)(layer_1)
layer_3 = Dense(5)(layer_2)
output_layer = Dense(1)(layer_3)
basic_model = Model(inputs=input_layer, outputs=output_layer)
# some random input
import numpy as np
features = np.random.rand(100,10)
# With a second Model
intermediate_model = Model(inputs=basic_model.layers[0].input,
outputs=[l.output for l in basic_model.layers[1:]])
intermediate_model.predict(features) # outputs a list of 4 arrays
或者,您可以以类似的方式使用 Keras 函数:
# With a Keras function
get_all_layer_outputs = K.function([basic_model.layers[0].input],
[l.output for l in basic_model.layers[1:]])
layer_output = get_all_layer_outputs([features]) # return the same thing
关于python - Keras/ tensorflow : Get predictions or output of all layers efficiently,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677631/
这里有没有人在使用Google Prediction API?为了什么?它“起作用”了吗? 最佳答案 如果您正在寻找实际案例,请查看此案例automatically assigns priority
无论如何,学习R ..: 在简单的x和y回归中,我输入: predict(data1.lm, interval="prediction") 和 predict(data1.lm, interval="
我创建并调整了多个模型,但在尝试预测它们时遇到了问题。我首先按如下方式运行代码来调整 LDA 模型。 library(MASS) library(caret) library(randomForest
问题 我在 R 中训练了一个线性回归来预测 this.target来自 city , 数据框中的变量 data .这个训练是在数据的一个子集上完成的,它由 train.index 指定。 . mode
我正在检查 tf-serving 示例,发现 inception_client.py mnist_client.py 时使用 result = Stub.Predict(request, 10.0)使
我已在 Google ML Engine 中上传了该模型的一个版本,其中包含 saved_model.pb 和一个变量文件夹。当我尝试执行命令时: gcloud ml-engine local pre
请先在我们的 GitHub 存储库中搜索类似问题。如果您找不到类似的示例,您可以使用以下模板: 系统(请填写以下信息): - 操作系统:Ubuntu 18.04 - Python版本:3.6.7 -
我正在研究一个简单的 LL(1) 解析器生成器,我遇到了给定某些输入语法的 PREDICT/PREDICT 冲突问题。例如,给定如下输入语法: E → E + E | P P → 1 我可以
我正在对具有多个预测变量的线性模型的预测值求和,如下例所示,并希望计算该总和的组合方差、标准误差和可能的置信区间。 lm.tree <- lm(Volume ~ poly(Girth,2), data
我是 R 和统计学的新手。所以这个问题可能有点愚蠢,但我想知道 R 中的 predict() 和 predict.lm() 之间是否有任何区别?我认为它们是相同的,但如果它们是相同的,为什么会有两个不
我尝试了针对this question而发布的答案,但是错误没有改变。我试图以相同的方式预处理训练集和测试集。它们来自两个不同的文件,我不确定我的老师是否会把我混合在一起,所以在拆分它们之前进行预处理
使用随机森林包:- #install.packages("randomForest") library(randomForest) 我使用在线代码在我的系统上运行随机森林。我得到了一个具有混淆矩阵和准
我有一个模型 (fit),基于上个月之前的历史信息。现在我想使用我的模型来预测当月的情况。当我尝试调用以下代码时: predicted fit$modelInfo$label [1]“随机森林” 因此
我正在尝试找出应用于列表的操作。我有列表/数组名称预测并执行以下指令集。 predictions[predictions >> a = np.array([1,2,3,4,5]) #define ar
此 R 代码引发警告 # Fit regression model to each cluster y fit$rank 检查 另一种方法是拥有比可用变量更多的参数: fit2 <- lm(y ~
我不是 R 专家。我正在尝试计算多项式模型生成的偏差: f calc.bias(f, polydeg, x))。我使用的整个代码: library(PolynomF) f <- function(x)
谁能帮我解决我的问题?我似乎无法从互联网上得到任何答案。我一直在寻找一整天。所以这是我的问题。我正在使用 opencv4android 2.4.10 和 Android Studio 作为我的 IDE
我可以使用哪种方法来根据姓氏来预测某人的国籍? 我有大量的文字和作者姓氏。我想确定哪些语言是由拉丁语使用者撰写的,哪些文本是由以英语为母语的使用者撰写的,以便研究一组中的某些写作风格模式是否与另一组中
我很好奇克服“冷启动”问题的方法/途径是什么,当新用户或项目进入系统时,由于缺乏有关该新实体的信息,因此进行推荐是一个问题。 我可以考虑做一些基于预测的推荐(例如性别、国籍等)。 最佳答案 您可以冷启
我正在使用零膨胀负二项式模型(包:pscl)对电影通过联系网络(基于电话数据)的传播进行建模 m1 我的变量是: 因变量: 扩散链的长度(计数 [0,36]) 自变量: 电影特征(虚拟变量和连续变量
我是一名优秀的程序员,十分优秀!