标签: pruning

修剪在Keras

我正在尝试使用Keras设计一个优先考虑预测性能的神经网络,并且通过进一步减少每层的层数和节点数量,我无法获得足够高的精度.我注意到我的很大一部分重量实际上是零(> 95%).有没有办法修剪密集层以期减少预测时间?

neural-network pruning python-3.x keras

16
推荐指数
2
解决办法
6060
查看次数

为什么C4.5算法使用修剪来减少决策树以及修剪如何影响预测精度?

我在google上搜索过这个问题,我找不到能够以简单而详细的方式解释这个算法的东西.

例如,我知道id3算法根本不使用修剪,因此如果你有连续特征,预测成功率将非常低.

所以C4.5为了支持它使用修剪的连续特性,但这是唯一的原因吗?

此外,我在WEKA应用程序中无法理解,置信因子究竟如何影响预测的效率.置信因子越小,算法修剪越多,但修剪与预测精度之间的相关性是多少?修剪越多,预测越好或越差?

谢谢

decision-tree weka pruning

9
推荐指数
1
解决办法
1万
查看次数

如何在spark中启用分区修剪

我正在阅读镶木地板数据,我看到它列出了驱动程序端的所有目录

Listing s3://xxxx/defloc/warehouse/products_parquet_151/month=2016-01 on driver
Listing s3://xxxx/defloc/warehouse/products_parquet_151/month=2014-12 on driver
Run Code Online (Sandbox Code Playgroud)

我在where子句中指定了month = 2014-12.我尝试过使用spark sql和数据框架API,看起来两者都没有修剪分区.

使用Dataframe API

df.filter("month='2014-12'").show()
Run Code Online (Sandbox Code Playgroud)

使用Spark SQL

sqlContext.sql("select name, price from products_parquet_151 where month = '2014-12'")
Run Code Online (Sandbox Code Playgroud)

我在版本1.5.1,1.6.1和2.0.0上尝试了上述内容

pruning apache-spark apache-spark-sql spark-dataframe

9
推荐指数
1
解决办法
4109
查看次数

如何冻结/锁定一个TensorFlow变量的权重(例如,一个层的一个CNN内核)

我有一个表现良好的TensorFlow CNN模型,我们希望在硬件中实现这个模型; 即一个FPGA.这是一个相对较小的网络,但如果它更小,它将是理想的.有了这个目标,我已经检查了内核,发现有一些权重非常强,还有一些根本没有做太多(内核值都接近于零).这特别发生在第2层,对应于名为"W_conv2"的tf.Variable().W_conv2具有形状[3,3,32,32].我想冻结/锁定W_conv2 [:,:,29,13]的值并将它们设置为零,以便可以训练网络的其余部分进行补偿.将该内核的值设置为零有效地从硬件实现中移除/修剪内核,从而实现上述目标.

我发现了类似的问题,建议通常围绕两种方法之一;

建议#1:

    tf.Variable(some_initial_value, trainable = False)
Run Code Online (Sandbox Code Playgroud)

实现此建议会冻结整个变量.我想冻结一个切片,特别是W_conv2 [:,:,29,13].

建议#2:

    Optimizer = tf.train.RMSPropOptimizer(0.001).minimize(loss, var_list)
Run Code Online (Sandbox Code Playgroud)

同样,实现此建议不允许使用切片.例如,如果我尝试我所声明目标的反转(仅优化单个变量的单个内核),如下所示:

    Optimizer = tf.train.RMSPropOptimizer(0.001).minimize(loss, var_list = W_conv2[:,:,0,0]))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

    NotImplementedError: ('Trying to optimize unsupported type ', <tf.Tensor 'strided_slice_2228:0' shape=(3, 3) dtype=float32>)
Run Code Online (Sandbox Code Playgroud)

以我在这里尝试的方式切换tf.Variables()是不可能的.我尝试过的唯一可以接近做我想要的就是使用.assign(),但这是非常低效,笨重,和穴居人一样,因为我已经按照以下方式实现了它(在训练模型之后):

    for _ in range(10000):
        # get a new batch of data
        # reset the values of W_conv2[:,:,29,13]=0 each time through
        for m in range(3):
            for n in range(3):
                assign_op = W_conv2[m,n,29,13].assign(0)
                sess.run(assign_op)
        # re-train the rest of the network
        _, loss_val = …
Run Code Online (Sandbox Code Playgroud)

pruning tensorflow

8
推荐指数
1
解决办法
2670
查看次数

如何在 PyTorch 中修剪小于阈值的权重?

如何修剪小于阈值的 CNN(卷积神经网络)模型的权重(让我们考虑修剪所有 <= 1 的权重)。

对于在 pytorch 中以 .pth 格式保存的权重文件,我们如何实现?

python pruning conv-neural-network pytorch

8
推荐指数
2
解决办法
3062
查看次数

加速FFTW修剪以避免大量零填充

假设我有一个x(n)K * N长的序列,只有第一个N元素与零不同.我假设,N << K例如,N = 10K = 100000.我想通过FFTW计算这种序列的FFT.这相当于具有一系列长度N并且具有零填充K * N.由于N并且K可能是"大",我有一个显着的零填充.我正在探索是否可以节省一些计算时间,避免显式零填充.

案子 K = 2

让我们从考虑案例开始K = 2.在这种情况下,DFT x(n)可以写成

在此输入图像描述

如果k是偶数k = 2 * m,那么

在此输入图像描述

这意味着DFT的这些值可以通过长度序列的FFT来计算N,而不是K * N.

如果k是奇数k = 2 * m + 1,那么

在此输入图像描述

这意味着可以通过长度序列的FFT再次计算DFT的这种值N,而不是K * N.

因此,总之,我可以用长度2 * N …

c c++ fft fftw pruning

7
推荐指数
2
解决办法
596
查看次数

类型错误:张量是不可散列的。相反,使用 tensor.ref() 作为键。在 Keras 外科医生

我正在使用 Kerassurgeon 模块进行修剪。我在 google colab 中使用 VGG-16 时遇到了这个错误。它适用于其他模型。有人可以帮我解决这个问题。

---> 17   model_new = surgeon.operate()<br>
     18   return model_new

>>/usr/local/lib/python3.6/dist-packages/kerassurgeon/surgeon.py in operate(self)
    152             sub_output_nodes = utils.get_node_inbound_nodes(node)
    153             outputs, output_masks = self._rebuild_graph(self.model.inputs,
--> 154                                                         sub_output_nodes)
    155 
    156             # Perform surgery at this node

>>/usr/local/lib/python3.6/dist-packages/kerassurgeon/surgeon.py in _rebuild_graph(self, graph_inputs, output_nodes, graph_input_masks)
    264         # Call the recursive _rebuild_rec method to rebuild the submodel up to
    265         # each output layer
--> 266         outputs, output_masks = zip(*[_rebuild_rec(n) for n in output_nodes])
    267         return outputs, output_masks
    268 

>>/usr/local/lib/python3.6/dist-packages/kerassurgeon/surgeon.py in …
Run Code Online (Sandbox Code Playgroud)

pruning keras vgg-net tf.keras

7
推荐指数
2
解决办法
1万
查看次数

是否有免费工具能够从CLI程序集中修剪未使用的代码?

是否有免费工具能够从CLI程序集中修剪未使用的代码?

我知道有些混淆器能够执行这种优化,但这些都需要花钱.是否有免费(甚至开源)工具删除已编译的程序集中未使用的代码?

.net obfuscation cil pruning

6
推荐指数
1
解决办法
381
查看次数

rpart自动修剪?

软件rpart自动修剪?

rpart生成的决策树比具有自动修剪功能的Oracle Data Mining生成的决策树要高得多.

r pruning rpart

6
推荐指数
1
解决办法
2354
查看次数

最小平均重量循环 - 直观解释

在有向图中,我们正在寻找具有最低平均边权重的周期.例如,具有节点1和2的图表具有从长度2的1到2和长度4的2到1的路径将具有3的最小平均周期.

不是寻找复杂的方法(Karp),而是通过修剪解决方案进行简单的回溯.当当前运行平均值大于最佳找到的平均重量循环成本时,给出了解释为"具有重要修剪回溯的可解决方案".

但是,为什么这种方法有效呢?如果我们在一个周期的中途并且重量超过最佳找到的平均值,那么在重量较小的边缘我们是否可能达到我们当前周期可能低于最佳平均值的情况?

编辑:以下是一个示例问题:http://uva.onlinejudge.org/index.php?option = onlinejudge&page = show_problem & problem = 2031

c++ graph-theory cycle backtracking pruning

6
推荐指数
1
解决办法
609
查看次数