Julia 和 Python,哪一个更快?( 四 )


  •  
    elapsed CPU time: 0.000718 seconds
     
  •  
    Python:
     
    1.  
      gc.collect()
       
    2.  
      start = process_time()
       
    3.  
      linear_reg()
       
    4.  
      end = process_time()
       
    5.  
       
    6.  
      print(end-start)
       
    7.  
      elapsed time: 0.007180344000000005
       
     
    上面给出了 Julia 和 Python 所花费的时间 。
    逻辑回归
    接下来,我们使用两种语言的库对最常见的机器学习算法(即逻辑回归)进行了实验 。对于 Python 我们使用最常见的库sklearn;对于 Julia,我们使用GLM库 。我们在这里用到的数据集是有关银行客户的信息,其中包含 10,000 个数据条目 。目标变量是一个二元变量,区分消费者是否继续使用银行账户 。
    下面给出了 Julia 进行逻辑回归所花费的时间:
     
    1.  
      @time log_rec()
       
    2.  
      0.027746 seconds (3.32 k allocations: 10.947 MiB)
       
     
    下面给出了 Python 进行逻辑回归所花费的时间:
     
    1.  
      gc.collect()
       
    2.  
      start = process_time()
       
    3.  
      LogReg()
       
    4.  
      end = process_time()
       
    5.  
      print(end-start)
       
    6.  
       
    7.  
      Accuracy : 0.8068
       
    8.  
      0.34901400000000005
       
     
    神经网络
    在各种程序和数据集上测试这两种语言后,我们在神经网络上使用 MNIST 数据集继续测试它们 。该数据集包含从零到九的手绘数字的灰度图像 。每张图像为 28×28 像素 。每个像素值表示该像素的亮度或暗度,该值是包含 0 到 255 之间的整数 。该数据还包含一个标签列,该列表示在相关图像中绘制的数字 。
    Julia 和 Python,哪一个更快?

    文章插图
    Figure 1: Example of MNIST data set
    图 1 是 MNIST 数据集的示例 。
    对两种语言我们都建立了一个简单的神经网络来测试它们耗费的时间 。神经网络的结构如下:
     
    1.  
      Input ---> Hidden layer ---> Output
       
     
    该神经网络包含了一个输入层、隐层还有输出层 。为了避免神经网络的复杂度过高,我们对数据集没有进行任何的预处理工作 。在 Julia 和 Python 中我们都进行了40次训练并比较它们的时间差异 。
    Figure 2: Julia takes 5.76 seconds in a neural.NETwork
    在 Julia 中,Flux库通常被用于建立神经网络;在 Python 中我们常使用Keras库 。图 2 展示了 Julia 在神经网络上的耗时 。图 3 展示了 Python 的神经网络经过了若干次训练的耗时 。
    Julia 和 Python,哪一个更快?

    文章插图
    Figure 3: Python takes 110.3 seconds in a neural network
    这个结果展示了 Julia 和 Python 在处理神经网络时存在巨大的时间差异 。
    表 1 总结了此次实验的测试结果并计算了 Julia 和 Python 时间差异的百分比 。
    < 如显示不全,请左右滑动 >
    实验 Julia(秒) Python(秒) 时间差(%) 矩阵乘法(不使用库) 0.000001 0.0015 99.9 矩阵乘法(使用库) 0.000017 0.0013 98.69 线性搜索(使用循环) 0.42 16.4 97.43 线性搜索(使用 IN 操作符) 0.43 6.2 93.06 线性回归 0.000718 0.00718 90 逻辑回归 0.025 0.34901 92.83 神经网络 5.76 110.3 94.77
    我们进行的所有实验都表明,随着程序复杂性以及数据集大小的增加,Julia 和 Python 之间的执行时间差异也会增加 。由这个结果我们可以推断,Julia 是一门更适合机器学习和神经网络的编程语言 。


    推荐阅读