小编Hun*_*gry的帖子

java 8中的漂亮打印XML

我有一个XML文件存储为DOM文档,我想将它打印到控制台,最好不使用外部库.我知道这个问题已在本网站上被多次询问,但以前的答案都没有对我有用.我正在使用java 8,所以也许这是我的代码与以前的问题不同的地方?我还尝试使用从网络上找到的代码手动设置变换器,但这只是导致not found错误.

这是我的代码,它当前只是在控制台左侧的新行上输出每个xml元素.

import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;


public class Test {
    public Test(){
        try {
            //java.lang.System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");

            DocumentBuilderFactory dbFactory;
            DocumentBuilder dBuilder;
            Document original = null;
            try {
                dbFactory = DocumentBuilderFactory.newInstance();
                dBuilder = dbFactory.newDocumentBuilder();
                original = dBuilder.parse(new InputSource(new InputStreamReader(new FileInputStream("xml Store - Copy.xml"))));
            } catch (SAXException | IOException | ParserConfigurationException e) {
                e.printStackTrace();
            }
            StringWriter stringWriter = new StringWriter();
            StreamResult xmlOutput = new StreamResult(stringWriter); …
Run Code Online (Sandbox Code Playgroud)

java xml dom pretty-print transformer-model

24
推荐指数
3
解决办法
3万
查看次数

偏置节点是非常大的神经网络所必需的吗?

我理解偏置节点在神经网络中的作用,以及为什么它对于在小型网络中转移激活功能很重要.我的问题是:偏差在非常大的网络中仍然很重要(更具体地说,是使用ReLu激活函数进行图像识别的卷积神经网络,3个卷积层,2个隐藏层和超过100,000个连接),或者它的影响是否得到失败的激活次数发生了吗?

我问的原因是因为在过去我已经建立了我忘记实现偏置节点的网络,但是在添加一个网络时,性能上的差异可以忽略不计.这可能是偶然的,因为特定的数据集不需要偏见吗?我是否需要在大型网络中以更大的值初始化偏差?任何其他建议将不胜感激.

artificial-intelligence machine-learning image-recognition neural-network supervised-learning

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

当x = 0时,Java的Math.pow(x,2)表现不佳

背景

注意到我正在处理的java程序的执行速度比预期慢,我决定修补我认为可能导致问题的代码区域 - 从一个内部调用Math.pow(x,2) for循环.与本网站上的另一个问题相反,我创建的一个简单基准测试(最后的代码)发现用x*x替换Math.pow(x,2)实际上将循环加速了近70倍:

x*x: 5.139383ms
Math.pow(x, 2): 334.541166ms
Run Code Online (Sandbox Code Playgroud)

请注意,我知道基准测试并不完美,而且值肯定应该用一点点盐 - 基准的目的是得到一个大概的数字.

问题

虽然基准测试给出了有趣的结果,但它没有准确地模拟我的数据,因为我的数据主要由0组成.因此,更准确的测试是运行基准测试,而不将for循环标记为可选.根据Math.pow()的javadoc

如果第一个参数为正零且第二个参数大于零,或者第一个参数为正无穷大且第二个参数小于零,则结果为正零.

所以预计这个基准测试运行得更快吧!?但实际上,这又慢了很多:

x*x: 4.3490535ms
Math.pow(x, 2): 3082.1720006ms
Run Code Online (Sandbox Code Playgroud)

当然,人们可能期望math.pow()代码比简单的x*x代码运行慢一点,因为它需要适用于一般情况,但速度要慢700倍?到底是怎么回事!?为什么0情况比Math.random()情况慢得多?

更新: 根据@Stephen C的建议更新代码和时间.然而,这没有什么区别.

代码用于基准测试

请注意,重新排序这两个测试可以忽略不计.

public class Test {
    public Test(){
        int iterations = 100;
        double[] exampleData = new double[5000000];
        double[] test1Results = new double[iterations];
        double[] test2Results = new double[iterations];

        //Optional
        for (int i = 0; i < exampleData.length; i++) {
            exampleData[i] = Math.random();
        }

        for (int i = 0; i < iterations; i++) { …
Run Code Online (Sandbox Code Playgroud)

java math performance benchmarking pow

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

计算简单支持向量机的Lagrange多重算子

首先,我是支持向量机的初学者,所以如果我以错误的方式解决这个问题,我很抱歉.我试图从头开始实现一个非常简单的SVM,它使用标识内核函数将线性可分离数据分类为两个类之一.作为我将使用的数据类型的示例,请考虑本文档中的下图:

绘制线性可分离数据

使用点(1,0),(3,1)和(3,-1)作为支持向量,我们知道关于计算决策平面的情况如下(从同一文档截图):

拉格朗日Multipler一级方程式赛车 在摆弄和重新排列时,我们分别给出拉格朗日乘数-3.5,0.75和0.75.

我理解这个代数是如何在纸上工作的,但是我不确定在实现时最好的方法.所以我的问题如下:在实践中如何计算SVM的拉格朗日乘数?是否有一个我遗漏的算法能够确定任意线性可分支持向量的这些值?我应该使用标准的数学库来解决线性方程式(我在java中实现SVM)?这样的数学库对大规模学习来说会慢吗?请注意,这是一个学习练习,所以我不只是在寻找一个现成的SVM库.

任何其他建议将不胜感激!

编辑1:LutzL提出了一个很好的观点,即问题的一半实际上是确定哪些点将被用作支持向量,因此为了这个问题的目的,假设它们已经被计算出来.

java math machine-learning linear-algebra svm

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

JButton 文本的抗锯齿

我在 JButton 中使用Font Awesome创建一个可单击的图标,但是当尺寸较小时,生成的图标会出现别名。作为一点背景知识,Font Awesome是一个可下载的ttf文件(字体文件),其中每个字符都是一个“可缩放矢量图标”。paintComponent查看了 Google 和堆栈溢出之前的答案后,我尝试通过覆盖JButton 的方法来强制抗锯齿;然而这似乎没有效果:

import java.awt.*;
import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test extends JFrame{

    public Test(){
        Font fontAwesome = null;
        try {
            fontAwesome = Font.createFont(Font.TRUETYPE_FONT, new File("font-awesome-4.2.0\\fonts\\fontawesome-webfont.ttf"));
            fontAwesome = fontAwesome.deriveFont(Font.PLAIN, 100);
        } catch (FontFormatException | IOException e) {
            e.printStackTrace();
        }

        JButton iconButton = new JButton("\uf0a8"){
            @Override
            public void paintComponent(Graphics g) {
                Graphics2D graphics2d = (Graphics2D) g;
                graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                //graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                //graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
                //graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, …
Run Code Online (Sandbox Code Playgroud)

java fonts swing jbutton font-awesome

5
推荐指数
1
解决办法
743
查看次数