前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这是一份你们需要的Windows版深度学习软件安装指南

这是一份你们需要的Windows版深度学习软件安装指南

作者头像
机器之心
发布于 2018-05-08 04:05:56
发布于 2018-05-08 04:05:56
1.8K00
代码可运行
举报
文章被收录于专栏:机器之心机器之心
运行总次数:0
代码可运行

选自Github

机器之心编译

参与:蒋思源、刘晓坤

本文从最基本的依赖项开始,依次配置了 VS 2015、Anaconda 4.4.0、CUDA 8.0.61 和 cuDNN v5.1 等基本环境,然后再从 Keras 出发安装 Theano、TensorFlow 和 CNTK 以作为其后端。在完成配置深度学习框架后,本文分别利用这三个框架作为 Keras 后端在 CPU 和 GPU 上训练了一个标准的卷积神经网络,完成该简单的卷积网络也就意味着我们完成了深度学习环境的配置。

该配置版本最后更新的日期是今年七月,该更新版本允许本地使用 3 个不同的 GPU 加速后端,并添加对 MKL BLAS 库的支持。

目前有很多帮助我们在 Linux 或 Mac OS 上构建深度学习(DL)环境的指导文章,但很少有文章完整地叙述如何高效地在 Windows 10 上配置深度学习开发环境。此外,很多开发者安装 Windows 和 Ubuntu 双系统或在 Windows 上安装虚拟机以配置深度学习环境,但对于入门者来说,我们更希望还是直接使用 Windows 直接配置深度学习环境。因此,本文作者 Phil Ferriere 在 GitHub 上发布了该教程,他希望能从最基本的环境变量配置开始一步步搭建 Keras 深度学习开发环境。

如果读者希望在 Windows 10 上配置深度学习环境,那么本文将为大家提供很多有利的信息。

依赖项

下面是我们将在 Windows 10(Version 1607 OS Build 14393.222)上配置深度学习环境所需要的工具和软件包:

  1. Visual Studio 2015 Community Edition Update 3 w. Windows Kit 10.0.10240.0:用于其 C/C++编译器(而不是 IDE)和 SDK,选择该确定的版本是因为 CUDA 8.0.61 所支持的 Windows 编译器。
  2. Anaconda (64-bit) w. Python 3.6 (Anaconda3-4.4.0) [for Tensorflow support] or Python 2.7 (Anaconda2-4.4.0) [no Tensorflow support] with MKL:Anaconda 是一个开源的 Python 发行版本,其包含了 conda、Python、NumPy、SciPy 等 180 多个科学包及其依赖项,是一个集成开发环境。MKL 可以利用 CPU 加速许多线性代数运算。
  3. CUDA 8.0.61 (64-bit):CUDA 是一种由 NVIDIA 推出的通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题,该软件包能提供 GPU 数学库、显卡驱动和 CUDA 编译器等。
  4. cuDNN v5.1 (Jan 20, 2017) for CUDA 8.0:用于加速卷积神经网络的运算。
  5. Keras 2.0.5 with three different backends: Theano 0.9.0, Tensorflow-gpu 1.2.0, and CNTK 2.0:Keras 以 Theano、Tensorflow 或 CNTK 等框架为后端,并提供深度学习高级 API。使用不同的后端在张量数学计算等方面会有不同的效果。

硬件

  • Dell Precision T7900, 64GB RAM:Intel Xeon E5-2630 v4 @ 2.20 GHz (1 processor, 10 cores total, 20 logical processors)
  • NVIDIA GeForce Titan X, 12GB RAM:Driver version: 372.90 / Win 10 64

安装步骤

我们可能喜欢让所有的工具包和软件包在一个根目录下(如 e:\toolkits.win),所以在下文只要看到以 e:\toolkits.win 开头的路径,那么我们可能就需要小心不要覆盖或随意更改必要的软件包目录。

  • Visual Studio 2015 Community Edition Update 3 w. Windows Kit 10.0.10240.0
  • 下载地址:https://www.visualstudio.com/vs/older-downloads

运行下载的软件包以安装 Visual Studio,可能我们还需要做一些额外的配置:

  • 基于我们安装 VS 2015 的地址,需要将 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 添加到 PATH 中。
  • 定义系统环境变量(sysenv variable)INCLUDE 的值为 C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
  • 定义系统环境变量(sysenv variable)LIB 的值为 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64

Anaconda 4.4.0 (64-bit) (Python 3.6 TF support / Python 2.7 no TF support))

本教程最初使用的是 Python 2.7,而随着 TensorFlow 可作为 Keras 的后端,我们决定使用 Python 3.6 作为默认配置。因此,根据我们配置的偏好,可以设置 e:\toolkits.win\anaconda3-4.4.0 或 e:\toolkits.win\anaconda2-4.4.0 为安装 Anaconda 的文件夹名。

  • Python 3.6 版本的 Anaconda 下载地址:https://repo.continuum.io/archive/Anaconda3-4.4.0-Windows-x86_64.exe
  • Python 2.7 版本的 Anaconda 下载地址:https://repo.continuum.io/archive/Anaconda2-4.4.0-Windows-x86_64.exe

运行安装程序完成安装:

如上,本教程选择了第二个选项,但不一定是最好的。

定义一下变量并更新 PATH:

  • 定义系统环境(sysenv variable)变量 PYTHON_HOME 的值为 e:\toolkits.win\anaconda3-4.4.0
  • 添加 %PYTHON_HOME%, %PYTHON_HOME%\Scripts 和 %PYTHON_HOME%\Library\bin 到 PATH 中

创建 dlwin36 conda 环境

在安装 Anaconda 后,打开 Windows 命令窗口并执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#使用以下命令行创建环境
$ conda create --yes -n dlwin36 numpy scipy mkl-service m2w64-toolchain libpython jupyter


# 使用以下命令行激活环境:
# > activate dlwin36
#
# 使用以下命令行关闭环境:
# > deactivate dlwin36
#
# * for power-users using bash, you must source
#

如上所示,使用 active dlwin36 命令激活这个新的环境。如果已经有了旧的 dlwin36 环境,可以先用 conda env remove -n dlwin36 命令删除。既然打算使用 GPU,为什么还要安装 CPU 优化的线性代数库如 MKL 呢?在我们的设置中,大多数深度学习都是由 GPU 承担的,这并没错,但 CPU 也不是无所事事。基于图像的 Kaggle 竞赛一个重要部分是数据增强。如此看来,数据增强是通过转换原始训练样本(利用图像处理算子)获得额外输入样本(即更多的训练图像)的过程。基本的转换比如下采样和均值归 0 的归一化也是必需的。如果你觉得这样太冒险,可以试试额外的预处理增强(噪声消除、直方图均化等等)。当然也可以用 GPU 处理并把结果保存到文件中。然而在实践过程中,这些计算通常都是在 CPU 上平行执行的,而 GPU 正忙于学习深度神经网络的权重,况且增强数据是用完即弃的。因此,我们强烈推荐安装 MKL,而 Theanos 用 BLAS 库更好。

CUDA 8.0.61 (64-bit)

从英伟达网站下载 CUDA 8.0 (64-bit):https://developer.nvidia.com/cuda-downloads

选择合适的操作系统:

下载安装包:

运行安装包,安装文件到 e:\toolkits.win\cuda-8.0.61 中:

完成安装后,安装包应该创建了一个名为 CUDA_PATH 的系统环境变量(sysenv variable),并且已经添加了%CUDA_PATH%\bin 和 %CUDA_PATH%\libnvvp 到 PATH 中。检查是否真正添加了,若 CUDA 环境变量因为一些原因出错了,那么完成下面两个步骤:

  • 定义名为 CUDA_PATH 的系统环境变量的值为 e:\toolkits.win\cuda-8.0.61
  • 添加%CUDA_PATH%\bin 和 %CUDA_PATH%\libnvvp 到 PATH 中

cuDNN v5.1 (Jan 20, 2017) for CUDA 8.0

根据英伟达官网「cuDNN 为标准的运算如前向和反向卷积、池化、归一化和激活层等提供高度调优的实现」,它是为卷积神经网络和深度学习设计的一款加速方案。

cuDNN 的下载地址:https://developer.nvidia.com/rdp/cudnn-download

我们需要选择符合 CUDA 版本和 Window 10 编译器的 cuDNN 软件包,一般来说,cuDNN 5.1 可以支持 CUDA 8.0 和 Windows 10。

下载的 ZIP 文件包含三个目录(bin、include、lib),抽取这三个的文件夹到%CUDA_PATH% 中。

安装 Keras 2.0.5 和 Theano0.9.0 与 libgpuarray

运行以下命令安装 libgpuarray 0.6.2,即 Theano 0.9.0 唯一的稳定版:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ conda install pygpu==0.6.2 nose
#下面是该命令行安装的效果
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36:

The following NEW packages will be INSTALLED:

    libgpuarray: 0.6.2-vc14_0 [vc14]
    nose:        1.3.7-py36_1
    pygpu:       0.6.2-py36_0

Proceed ([y]/n)? y

输入以下命令安装 Keras 和 Theano:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ pip install keras==2.0.5
#下面是该命令行安装的效果
Collecting keras==2.0.5
Requirement already satisfied: six in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from keras==2.0.5)
Collecting pyyaml (from keras==2.0.5)
Collecting theano (from keras==2.0.5)
Requirement already satisfied: scipy>=0.14 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from theano->keras==2.0.5)
Requirement already satisfied: numpy>=1.9.1 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from theano->keras==2.0.5)
Installing collected packages: pyyaml, theano, keras
Successfully installed keras-2.0.5 pyyaml-3.12 theano-0.9.0

安装 CNTK 2.0 后端

根据 CNTK 安装文档,我们可以使用以下 pip 命令行安装 CNTK:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ pip install https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
#下面是该命令行安装的效果
Collecting cntk==2.0 from https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
  Using cached https://cntk.ai/PythonWheel/GPU/cntk-2.0-cp36-cp36m-win_amd64.whl
Requirement already satisfied: numpy>=1.11 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from cntk==2.0)
Requirement already satisfied: scipy>=0.17 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from cntk==2.0)
Installing collected packages: cntk
Successfully installed cntk-2.0

该安装将导致在 conda 环境目录下额外安装 CUDA 和 cuDNN DLLs:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ cd E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36
(dlwin36) $ dir cu*.dll
#下面是该命令行安装的效果
 Volume in drive E is datasets
 Volume Serial Number is 1ED0-657B

 Directory of E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36

06/30/2017  02:47 PM        40,744,896 cublas64_80.dll
06/30/2017  02:47 PM           366,016 cudart64_80.dll
06/30/2017  02:47 PM        78,389,760 cudnn64_5.dll
06/30/2017  02:47 PM        47,985,208 curand64_80.dll
06/30/2017  02:47 PM        41,780,280 cusparse64_80.dll
               5 File(s)    209,266,160 bytes
               0 Dir(s)  400,471,019,520 bytes free

这个问题并不是因为浪费硬盘空间,而是安装的 cuDNN 版本和我们安装在 c:\toolkits\cuda-8.0.61 下的 cuDNN 版本不同,因为在 conda 环境目录下的 DLL 将首先加载,所以我们需要这些 DLL 移除出%PATH% 目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ md discard & move cu*.dll discard
#下面是该命令行安装的效果
E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cublas64_80.dll
E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cudart64_80.dll
E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cudnn64_5.dll
E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\curand64_80.dll
E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\cusparse64_80.dll
        5 file(s) moved.

安装 TensorFlow-GPU 1.2.0 后端

运行以下命令行使用 pip 安装 TensorFlow:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ pip install tensorflow-gpu==1.2.0
#以下是安装效果
Collecting tensorflow-gpu==1.2.0
  Using cached tensorflow_gpu-1.2.0-cp36-cp36m-win_amd64.whl
Requirement already satisfied: bleach==1.5.0 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from tensorflow-gpu==1.2.0)
Requirement already satisfied: numpy>=1.11.0 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from tensorflow-gpu==1.2.0)
Collecting markdown==2.2.0 (from tensorflow-gpu==1.2.0)
Requirement already satisfied: wheel>=0.26 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from tensorflow-gpu==1.2.0)
Collecting protobuf>=3.2.0 (from tensorflow-gpu==1.2.0)
Collecting backports.weakref==1.0rc1 (from tensorflow-gpu==1.2.0)
  Using cached backports.weakref-1.0rc1-py3-none-any.whl
Collecting html5lib==0.9999999 (from tensorflow-gpu==1.2.0)
Collecting werkzeug>=0.11.10 (from tensorflow-gpu==1.2.0)
  Using cached Werkzeug-0.12.2-py2.py3-none-any.whl
Requirement already satisfied: six>=1.10.0 in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages (from tensorflow-gpu==1.2.0)
Requirement already satisfied: setuptools in e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\setuptools-27.2.0-py3.6.egg (from protobuf>=3.2.0->tensorflow-gpu==1.2.0)
Installing collected packages: markdown, protobuf, backports.weakref, html5lib, werkzeug, tensorflow-gpu
  Found existing installation: html5lib 0.999
    DEPRECATION: Uninstalling a distutils installed project (html5lib) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling html5lib-0.999:
      Successfully uninstalled html5lib-0.999
Successfully installed backports.weakref-1.0rc1 html5lib-0.9999999 markdown-2.2.0 protobuf-3.3.0 tensorflow-gpu-1.2.0 werkzeug-0.12.2

使用 conda 检查安装的软件包

完成以上安装和配置后,我们应该在 dlwin36 conda 环境中看到以下软件包列表:

为了快速检查上述三个后端安装的效果,依次运行一下命令行分别检查 Theano、TensorFlow 和 CNTK 导入情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ python -c "import theano; print('theano: %s, %s' % (theano.__version__, theano.__file__))"
theano: 0.9.0, E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\theano\__init__.py

(dlwin36) $ python -c "import pygpu; print('pygpu: %s, %s' % (pygpu.__version__, pygpu.__file__))"
pygpu: 0.6.2, e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\pygpu\__init__.py

(dlwin36) $ python -c "import tensorflow; print('tensorflow: %s, %s' % (tensorflow.__version__, tensorflow.__file__))"
tensorflow: 1.2.0, E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\tensorflow\__init__.py

(dlwin36) $ python -c "import cntk; print('cntk: %s, %s' % (cntk.__version__, cntk.__file__))"
cntk: 2.0, E:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\cntk\__init__.py

验证 Theano 的安装

因为 Theano 是安装 Keras 时自动安装的,为了快速地在 CPU 模式、GPU 模式和带 cuDNN 的 GPU 模式之间转换,我们需要创建以下三个系统环境变量(sysenv variable):

  • 系统环境变量 THEANO_FLAGS_CPU 的值定义为:floatX=float32,device=cpu
  • 系统环境变量 THEANO_FLAGS_GPU 的值定义为:floatX=float32,device=cuda0,dnn.enabled=False,gpuarray.preallocate=0.8
  • 系统环境变量 THEANO_FLAGS_GPU_DNN 的值定义为:floatX=float32,device=cuda0,optimizer_including=cudnn,gpuarray.preallocate=0.8,dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic,dnn.include_path=e:/toolkits.win/cuda-8.0.61/include,dnn.library_path=e:/toolkits.win/cuda-8.0.61/lib/x64

现在,我们能直接使用 THEANO_FLAGS_CPU、THEANO_FLAGS_GPU 或 THEANO_FLAGS_GPU_DNN 直接设置 Theano 使用 CPU、GPU 还是 GPU+cuDNN。我们可以使用以下命令行验证这些变量是否成功加入环境中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ set KERAS_BACKEND=theano
(dlwin36) $ set | findstr /i theano

KERAS_BACKEND=theano
THEANO_FLAGS=floatX=float32,device=cuda0,optimizer_including=cudnn,gpuarray.preallocate=0.8,dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic,dnn.include_path=e:/toolkits.win/cuda-8.0.61/include,dnn.library_path=e:/toolkits.win/cuda-8.0.61/lib/x64
THEANO_FLAGS_CPU=floatX=float32,device=cpu
THEANO_FLAGS_GPU=floatX=float32,device=cuda0,dnn.enabled=False,gpuarray.preallocate=0.8
THEANO_FLAGS_GPU_DNN=floatX=float32,device=cuda0,optimizer_including=cudnn,gpuarray.preallocate=0.8,dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic,dnn.include_path=e:/toolkits.win/cuda-8.0.61/include,dnn.library_path=e:/toolkits.win/cuda-8.0.61/lib/x64

更多具体的 Theano 验证代码与命令请查看原文。

检查系统环境变量

现在,不论 dlwin36 conda 环境什么时候激活,PATH 环境变量应该需要看起来如下面列表一样:

使用 Keras 验证 GPU+cuDNN 的安装

我们可以使用 Keras 在 MNIST 数据集上训练简单的卷积神经网络(convnet)而验证 GPU 的 cuDNN 是否正确安装,该文件名为 mnist_cnn.py,其可以在 Keras 案例中找到。该卷积神经网络的代码如下:

Keras案例地址:https://github.com/fchollet/keras/blob/2.0.5/examples/mnist_cnn.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ set KERAS_BACKEND=cntk
(dlwin36) $ python mnist_cnn.py
Using CNTK backend
Selected GPU[0] GeForce GTX TITAN X as the process wide default device.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\cntk\core.py:351: UserWarning: your data is of type "float64", but your input variable (uid "Input113") expects "<class 'numpy.float32'>". Please convert your data beforehand to speed up training.
  (sample.dtype, var.uid, str(var.dtype)))
60000/60000 [==============================] - 8s - loss: 0.3275 - acc: 0.8991 - val_loss: 0.0754 - val_acc: 0.9749
Epoch 2/12
60000/60000 [==============================] - 7s - loss: 0.1114 - acc: 0.9662 - val_loss: 0.0513 - val_acc: 0.9841
Epoch 3/12
60000/60000 [==============================] - 7s - loss: 0.0862 - acc: 0.9750 - val_loss: 0.0429 - val_acc: 0.9859
Epoch 4/12
60000/60000 [==============================] - 7s - loss: 0.0721 - acc: 0.9784 - val_loss: 0.0373 - val_acc: 0.9868
Epoch 5/12
60000/60000 [==============================] - 7s - loss: 0.0649 - acc: 0.9803 - val_loss: 0.0339 - val_acc: 0.9878
Epoch 6/12
60000/60000 [==============================] - 8s - loss: 0.0580 - acc: 0.9831 - val_loss: 0.0337 - val_acc: 0.9890
Epoch 7/12
60000/60000 [==============================] - 8s - loss: 0.0529 - acc: 0.9846 - val_loss: 0.0326 - val_acc: 0.9895
Epoch 8/12
60000/60000 [==============================] - 8s - loss: 0.0483 - acc: 0.9858 - val_loss: 0.0307 - val_acc: 0.9897
Epoch 9/12
60000/60000 [==============================] - 8s - loss: 0.0456 - acc: 0.9864 - val_loss: 0.0299 - val_acc: 0.9898
Epoch 10/12
60000/60000 [==============================] - 8s - loss: 0.0407 - acc: 0.9875 - val_loss: 0.0274 - val_acc: 0.9906
Epoch 11/12
60000/60000 [==============================] - 8s - loss: 0.0405 - acc: 0.9883 - val_loss: 0.0276 - val_acc: 0.9904
Epoch 12/12
60000/60000 [==============================] - 8s - loss: 0.0372 - acc: 0.9889 - val_loss: 0.0274 - val_acc: 0.9906
Test loss: 0.0274011099327
Test accuracy: 0.9906

1. 使用带 Theano 后端的 Keras

为了有一个能进行对比的基线模型,首先我们使用 Theano 后端和 CPU 训练简单的卷积神经网络:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ set KERAS_BACKEND=theano
(dlwin36) $ set THEANO_FLAGS=%THEANO_FLAGS_CPU%
(dlwin36) $ python mnist_cnn.py

#以下为训练过程和结果
Using Theano backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
60000/60000 [==============================] - 233s - loss: 0.3344 - acc: 0.8972 - val_loss: 0.0743 - val_acc: 0.9777
Epoch 2/12
60000/60000 [==============================] - 234s - loss: 0.1106 - acc: 0.9674 - val_loss: 0.0504 - val_acc: 0.9837
Epoch 3/12
60000/60000 [==============================] - 237s - loss: 0.0865 - acc: 0.9741 - val_loss: 0.0402 - val_acc: 0.9865
Epoch 4/12
60000/60000 [==============================] - 238s - loss: 0.0692 - acc: 0.9792 - val_loss: 0.0362 - val_acc: 0.9874
Epoch 5/12
60000/60000 [==============================] - 241s - loss: 0.0614 - acc: 0.9821 - val_loss: 0.0370 - val_acc: 0.9879
Epoch 6/12
60000/60000 [==============================] - 245s - loss: 0.0547 - acc: 0.9839 - val_loss: 0.0319 - val_acc: 0.9885
Epoch 7/12
60000/60000 [==============================] - 248s - loss: 0.0517 - acc: 0.9840 - val_loss: 0.0293 - val_acc: 0.9900
Epoch 8/12
60000/60000 [==============================] - 256s - loss: 0.0465 - acc: 0.9863 - val_loss: 0.0294 - val_acc: 0.9905
Epoch 9/12
60000/60000 [==============================] - 264s - loss: 0.0422 - acc: 0.9870 - val_loss: 0.0276 - val_acc: 0.9902
Epoch 10/12
60000/60000 [==============================] - 263s - loss: 0.0423 - acc: 0.9875 - val_loss: 0.0287 - val_acc: 0.9902
Epoch 11/12
60000/60000 [==============================] - 262s - loss: 0.0389 - acc: 0.9884 - val_loss: 0.0291 - val_acc: 0.9898
Epoch 12/12
60000/60000 [==============================] - 270s - loss: 0.0377 - acc: 0.9885 - val_loss: 0.0272 - val_acc: 0.9910
Test loss: 0.0271551907005
Test accuracy: 0.991

我们现在使用以下命令行利用带 Theano 的后端的 Keras 在 GPU 和 cuDNN 环境下训练卷积神经网络:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ set THEANO_FLAGS=%THEANO_FLAGS_GPU_DNN%
(dlwin36) $ python mnist_cnn.py
Using Theano backend.
Using cuDNN version 5110 on context None
Preallocating 9830/12288 Mb (0.800000) on cuda0
Mapped name None to device cuda0: GeForce GTX TITAN X (0000:03:00.0)
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
60000/60000 [==============================] - 17s - loss: 0.3219 - acc: 0.9003 - val_loss: 0.0774 - val_acc: 0.9743
Epoch 2/12
60000/60000 [==============================] - 16s - loss: 0.1108 - acc: 0.9674 - val_loss: 0.0536 - val_acc: 0.9822
Epoch 3/12
60000/60000 [==============================] - 16s - loss: 0.0832 - acc: 0.9766 - val_loss: 0.0434 - val_acc: 0.9862
Epoch 4/12
60000/60000 [==============================] - 16s - loss: 0.0694 - acc: 0.9795 - val_loss: 0.0382 - val_acc: 0.9876
Epoch 5/12
60000/60000 [==============================] - 16s - loss: 0.0605 - acc: 0.9819 - val_loss: 0.0353 - val_acc: 0.9884
Epoch 6/12
60000/60000 [==============================] - 16s - loss: 0.0533 - acc: 0.9836 - val_loss: 0.0360 - val_acc: 0.9883
Epoch 7/12
60000/60000 [==============================] - 16s - loss: 0.0482 - acc: 0.9859 - val_loss: 0.0305 - val_acc: 0.9897
Epoch 8/12
60000/60000 [==============================] - 16s - loss: 0.0452 - acc: 0.9865 - val_loss: 0.0295 - val_acc: 0.9911
Epoch 9/12
60000/60000 [==============================] - 16s - loss: 0.0414 - acc: 0.9878 - val_loss: 0.0315 - val_acc: 0.9898
Epoch 10/12
60000/60000 [==============================] - 16s - loss: 0.0386 - acc: 0.9886 - val_loss: 0.0282 - val_acc: 0.9911
Epoch 11/12
60000/60000 [==============================] - 16s - loss: 0.0378 - acc: 0.9887 - val_loss: 0.0306 - val_acc: 0.9904
Epoch 12/12
60000/60000 [==============================] - 16s - loss: 0.0354 - acc: 0.9893 - val_loss: 0.0296 - val_acc: 0.9898
Test loss: 0.0296215178292
Test accuracy: 0.9898

我们看到每一个 Epoch 的训练时间只需要 16 秒,相对于使用 CPU 要 250 秒左右取得了很大的提高(在同一个批量大小的情况下)。

2. 使用 TensorFlow 后端的 Keras

为了激活和测试 TensorFlow 后端,我们需要使用以下命令行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ set KERAS_BACKEND=tensorflow
(dlwin36) $ python mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-30 12:49:22.005585: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.005767: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.005996: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.006181: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.006361: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.006539: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.006717: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.006897: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-06-30 12:49:22.453483: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:940] Found device 0 with properties:
name: GeForce GTX TITAN X
major: 5 minor: 2 memoryClockRate (GHz) 1.076
pciBusID 0000:03:00.0
Total memory: 12.00GiB
Free memory: 10.06GiB
2017-06-30 12:49:22.454375: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:961] DMA: 0
2017-06-30 12:49:22.454489: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:971] 0:   Y
2017-06-30 12:49:22.454624: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce G
TX TITAN X, pci bus id: 0000:03:00.0)
60000/60000 [==============================] - 8s - loss: 0.3355 - acc: 0.8979 - val_loss: 0.0749 - val_acc: 0.9760
Epoch 2/12
60000/60000 [==============================] - 5s - loss: 0.1134 - acc: 0.9667 - val_loss: 0.0521 - val_acc: 0.9825
Epoch 3/12
60000/60000 [==============================] - 5s - loss: 0.0863 - acc: 0.9745 - val_loss: 0.0436 - val_acc: 0.9854
Epoch 4/12
60000/60000 [==============================] - 5s - loss: 0.0722 - acc: 0.9787 - val_loss: 0.0381 - val_acc: 0.9872
Epoch 5/12
60000/60000 [==============================] - 5s - loss: 0.0636 - acc: 0.9811 - val_loss: 0.0339 - val_acc: 0.9880
Epoch 6/12
60000/60000 [==============================] - 5s - loss: 0.0552 - acc: 0.9838 - val_loss: 0.0328 - val_acc: 0.9888
Epoch 7/12
60000/60000 [==============================] - 5s - loss: 0.0515 - acc: 0.9851 - val_loss: 0.0318 - val_acc: 0.9893
Epoch 8/12
60000/60000 [==============================] - 5s - loss: 0.0479 - acc: 0.9862 - val_loss: 0.0311 - val_acc: 0.9891
Epoch 9/12
60000/60000 [==============================] - 5s - loss: 0.0441 - acc: 0.9870 - val_loss: 0.0310 - val_acc: 0.9898
Epoch 10/12
60000/60000 [==============================] - 5s - loss: 0.0407 - acc: 0.9871 - val_loss: 0.0302 - val_acc: 0.9903
Epoch 11/12
60000/60000 [==============================] - 5s - loss: 0.0405 - acc: 0.9877 - val_loss: 0.0309 - val_acc: 0.9892
Epoch 12/12
60000/60000 [==============================] - 5s - loss: 0.0373 - acc: 0.9886 - val_loss: 0.0309 - val_acc: 0.9898
Test loss: 0.0308696583555
Test accuracy: 0.9898

我们看到使用 TensorFlow 后端要比 Theano 后端在该任务上快 3 倍左右,它们都是用了 GPU 和 cuDNN 加速。这可能是因为在该测试中它们有相同的通道等级(channel ordering),但实际上两个平台在这一点是不一样的。因此,程序可能强制 Theano 后端重新排序数据而造成性能上的差异。但在该案例下,TensorFlow 在 GPU 上的负载一直没有超过 70%。

3. 使用 CNTK 后端的 Keras

为了激活和测试 CNTK 后算,我们需要使用以下命令行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(dlwin36) $ set KERAS_BACKEND=cntk
(dlwin36) $ python mnist_cnn.py
Using CNTK backend
Selected GPU[0] GeForce GTX TITAN X as the process wide default device.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
e:\toolkits.win\anaconda3-4.4.0\envs\dlwin36\lib\site-packages\cntk\core.py:351: UserWarning: your data is of type "float64", but your input variable (uid "Input113") expects "<class 'numpy.float32'>". Please convert your data beforehand to speed up training.
  (sample.dtype, var.uid, str(var.dtype)))
60000/60000 [==============================] - 8s - loss: 0.3275 - acc: 0.8991 - val_loss: 0.0754 - val_acc: 0.9749
Epoch 2/12
60000/60000 [==============================] - 7s - loss: 0.1114 - acc: 0.9662 - val_loss: 0.0513 - val_acc: 0.9841
Epoch 3/12
60000/60000 [==============================] - 7s - loss: 0.0862 - acc: 0.9750 - val_loss: 0.0429 - val_acc: 0.9859
Epoch 4/12
60000/60000 [==============================] - 7s - loss: 0.0721 - acc: 0.9784 - val_loss: 0.0373 - val_acc: 0.9868
Epoch 5/12
60000/60000 [==============================] - 7s - loss: 0.0649 - acc: 0.9803 - val_loss: 0.0339 - val_acc: 0.9878
Epoch 6/12
60000/60000 [==============================] - 8s - loss: 0.0580 - acc: 0.9831 - val_loss: 0.0337 - val_acc: 0.9890
Epoch 7/12
60000/60000 [==============================] - 8s - loss: 0.0529 - acc: 0.9846 - val_loss: 0.0326 - val_acc: 0.9895
Epoch 8/12
60000/60000 [==============================] - 8s - loss: 0.0483 - acc: 0.9858 - val_loss: 0.0307 - val_acc: 0.9897
Epoch 9/12
60000/60000 [==============================] - 8s - loss: 0.0456 - acc: 0.9864 - val_loss: 0.0299 - val_acc: 0.9898
Epoch 10/12
60000/60000 [==============================] - 8s - loss: 0.0407 - acc: 0.9875 - val_loss: 0.0274 - val_acc: 0.9906
Epoch 11/12
60000/60000 [==============================] - 8s - loss: 0.0405 - acc: 0.9883 - val_loss: 0.0276 - val_acc: 0.9904
Epoch 12/12
60000/60000 [==============================] - 8s - loss: 0.0372 - acc: 0.9889 - val_loss: 0.0274 - val_acc: 0.9906
Test loss: 0.0274011099327
Test accuracy: 0.9906

在具体的试验中,CNTK 同样也十分快速,并且 GPU 负载达到了 80%。

原文链接:https://github.com/philferriere/dlwin

本文为机器之心编译,转载请联系本公众号获得授权。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
飞速崛起!ABCC全球排名前五,ETH交易对全球第一
公司创始人兼CEO为新加坡前国会议员及传媒大亨、香港区块链投资基金顾问郑恩里,团队主要成员均为来自金融、互联网巨头的顶尖人才,其专业能力与资源整合能力毋庸置疑。
区块链领域
2018/07/23
9540
飞速崛起!ABCC全球排名前五,ETH交易对全球第一
1分钟链圈|研究发现:今年全球ICO融资额近53亿美元!何玺:挖矿将成平民化运动,或可助国产“芯片”弯道超车
Hi,艾瑞巴蒂!近日,区块链游戏「量子英雄」正在内测,科科也很想玩,不过科科连内测码的影子都没见到。不知道各位看官有没有玩?快在评论区告诉科科好不好玩吧~ 这里是 4 月 30 日的每日1句话新闻,只需1分钟,看看全球最热、最新的区块链新闻。 实时币价:BTC $9208 ETH $674.60(数据来源: Bitfinex) 观点 V神提出了链交叉链接来实现他早前提出的最小分片规范 工信部中国技术产业网理事长陆军:社群、年轻人、普通参与者在区块链领域机会更大 何玺:挖矿将成平民化运动,或可助国产“芯片”
区块链大本营
2018/06/19
6430
疯狂TTF,7月8日一天分1000个BTC,7毛分3毛
疯狂TTF持币人,一天瓜分近900BTC,价值超4000万!天天交易所7月9日零点正式开启分红和返佣模式!
区块链领域
2018/07/23
5310
疯狂TTF,7月8日一天分1000个BTC,7毛分3毛
『7.2-7.8』数字资产交易所情报纵览
7月2日,OKex正式宣布将业务拓展至马耳他,其管理层已与马耳他政府及监管领导人会面,详细了解他们的立法和监管计划,并提供书面反馈及进行公开对话。OKex称马耳他政府的取向做法充满信心,决定以马耳他作为OKex未来发展计划的基石,并携手打造马耳他成为全球区块链中心。
金融科技先驱者
2018/07/10
6970
『7.2-7.8』数字资产交易所情报纵览
以太坊爆发空前燃料危机,交易费高达5862个ETH,罪魁祸首竟是FCoin!
上周一,以太坊用户为了进行交易总共支付了5862个ETH(大约270万美元)作为手续费,这是有可用网络数据以来的最高记录。罪魁祸首是谁?有人认为正是最近大火的FCoin,该交易所正在使用的具有争议的“交易即挖矿”模式似乎正在拥堵以太坊区块链。
区块链大本营
2018/08/03
4990
币猫COINCAT—一个95%代币由用户流通做主的交易即挖矿平台
在最近几个月,交易挖矿模式的交易所层出不穷,先有Fcoin平台币FT上涨百倍,后有OXC的连续暴涨,当然这些币之后都出现了不同程度的下跌,但第一批的玩家都是赚了十倍利润。挖矿交易所要怎么玩?大侠认为只能做第一批的资深玩家才能得到先行的回报,也就是说挖矿类型的交易所要在第一时间去玩,要在平台币还没上线的时候去玩,最好寻找不对外募集的平台。今天给大家介绍一个正准备上线的交易挖矿平台:COINCAT-将于7月24日上线开启挖矿,他们没有对外大规模募集,95%的代币都是玩家自己获得,大家可以看到目前正准备开启创世挖矿,大家可以看完介绍之后在文章下方扫码注册,注册实名认证之后将获得5000枚糖果,在24日上线之后可以卖出哦~
区块链领域
2018/08/03
1.7K0
币猫COINCAT—一个95%代币由用户流通做主的交易即挖矿平台
一文弄懂最近大火的BRC-20是什么?
2023年3月8日,推特用户@domodata创建了BRC-20标准,随后第二天就有3万个“铭文”被铸造。仅仅两个月,BRC-20代币的市值已接近10亿美元,BRC-20相关的交易费已高达255枚BTC,费用占比达到了40%。本文主要为大家做科普性介绍,并提供一些投资思路。
小将
2023/05/10
9530
一文弄懂最近大火的BRC-20是什么?
上币费换汤不换药,李笑来:一定要自己开交易所!
昨天一早一段疑似“中国比特币首富”李笑来私人谈话录音被曝光,曝光内容涉及到许多在币圈非常火的项目和名称,据统计大概有10条,其中第10条提到“一定要自己开交易所”。
金融科技先驱者
2018/07/05
1.3K0
上币费换汤不换药,李笑来:一定要自己开交易所!
1分钟链圈 | 融资5.75亿美元!ICO史上第三大项目诞生;日本将实现“骑行ofo即可挖矿”
这里是 6 月 22 日的每日1句话新闻晚报,只需1分钟,看看全球最热、最新的区块链新闻。
区块链大本营
2018/07/25
4930
1分钟链圈 | 融资5.75亿美元!ICO史上第三大项目诞生;日本将实现“骑行ofo即可挖矿”
加密数字货币交易平台中心化和去中心化之争
整个加密数字货币市场生态当中,作为最重要的流转环节之一,交易所和平台具有着无可替代的重要地位。交易所最为重要的作用就是将项目方加密数字货币的价值输出给所有的投资者,紧紧地将彼此连接起来。自2017年9月份以后,中国官方金融监管机构出台了一系列完整的加密数字货币监管政策,其中交易所和平台方被正式封杀,由此也为加密数字货币市场带来了很大的冲击。
用户2357564
2018/08/08
6410
加密数字货币交易平台中心化和去中心化之争
对BEX价格的定量预测
本文根据BEX白皮书明确的规则,估算BEX两年后(2019年7月)价格。预测分为两步,先估算1亿元的日交易额对应的BEX币的价值,再估算BEX平台的交易量,两者相乘计算出BEX的价格。
凌帅出口
2018/08/17
6320
肯尼亚成立特别小组,研究人工智能和区块链等最新技术;新型比特币现金社交平台BlockPress现世
Hi,艾瑞巴蒂!各位看官最近有没有好玩的区块链游戏?可以在评论区推荐给告诉科科哦~ 这里是 5 月 5 日的每日1句话新闻,只需1分钟,看看全球最热、最新的区块链新闻。 实时币价:BTC $9949
区块链大本营
2018/06/19
5640
1分钟链圈 | 蔡文胜:token不应有分红权!你觉得呢?黑客组织窃取5000万美元加密货币
Hi,everybody! 这是2月19日的每日1句话新闻,只需1分钟,让你大年初四也不错过最热门最及时的全球区块链新闻~~ 观点 蔡文胜:token不应有分红权 数学家:“Scriptless S
区块链大本营
2018/05/10
8350
日交易额曾过10亿 原币交所CEO趙伟带队进军多比交易平台
最近,多比平台一系列动作把币圈激起一层层波浪,原币交所CEO趙伟竟然在5月份悄然加盟多比团队,似乎正在暗地准备搞一个大事情。
dobitrade
2018/07/06
4610
疯狂的DeFi:开发者仅一人,一天暴涨40倍
来源 | PANews 责编 | 晋兆雨 头图 | CSDN付费下载自视觉中国 DeFi有多疯狂?引爆新一轮DeFi热的代币竟然是由一人运维,且自称代币一文不值? 上周末一个新的治理类代币YFI一天内暴涨40倍,将去中心化金融(DeFi)热潮推上新的巅峰。尽管其创始人也是唯一的开发者Andre Cronje再三强调他的治理代币“毫无价值”,但依旧阻止不了YFI从起初30美金的估值一度飙升到2374美金,随后两日价格又跌到822美元。 YFI是yearn平台的治理币,这是由Cronje独自一人开发的链上
区块链大本营
2023/03/31
3090
疯狂的DeFi:开发者仅一人,一天暴涨40倍
1分钟链圈 | 闪电网络将成为真正去中心化的交易所!清华大学研究团队申请“区块链+文化遗产保护”专利
这里是 7 月 14 日的每日1句话新闻晚报,只需1分钟,看看全球最热、最新的区块链新闻。
区块链大本营
2018/08/03
5290
交易所变革2.0:Fcoin开交易挖矿之先河,利益真正回馈社区
交易所一直被币圈领域的投资者认为处于产业生态链的上游,手续费、上币费等收费模式成为了日益稳定的收入模型,昔日交易所领域的火币网、OKCoin、比特币中国的三驾马车看似并驾齐驱,实则一直暗涛汹涌。
区块链领域
2018/08/16
4990
交易所变革2.0:Fcoin开交易挖矿之先河,利益真正回馈社区
像投资比特币一样投资旅游民宿
引导全球的民宿、精品酒店、度假地产发行代表其使用权的通证并流通,为区块链和全球旅游爱好者提供一个安全、公平、开放的交易平台,让用户可以像投资比特币一样投资全球旅游住宿产业。
区块链领域
2018/07/23
5440
像投资比特币一样投资旅游民宿
浅谈EKT多链技术是如何应对黑客攻击的
摘要:随着智能合约飞速发展,越来越多的项目基于以太坊发行token,链上资产的类别和规模呈指数级增长,“虚拟世界”中的数字资产也点燃了黑客们的“热情”。以太坊区块链被认为是区块链的2.0时代,各种各样新的数字资产都基于以太坊发行早期代币甚至实现部分功能,虽然国外区块链社区甚至认为以太坊体量变得太大,已经不可轻易战胜,但以太坊也是数字货币历史上产生最多安全问题的币种,从2016年的The DAO事件,到最近的BEC,EDU,SMT的安全漏洞,以太坊的智能合约可以说充满安全漏洞。大多数的代币都在自己主网上线前使用以太坊代币,作为投资者,为了自身资产的安全着想,熟悉智能合约的漏洞概念变得尤为重要。
风中凌乱的靓仔
2019/03/20
7040
浅谈EKT多链技术是如何应对黑客攻击的
火币前CTO操盘,交易即挖矿,暴涨18倍,Fcoin有望成下一个HT
位于食物链顶端的数字货币交易所将面临重大的历史机遇。大量的技术人才和产业资本纷纷涌进该领域抢占赛道。
区块链领域
2018/07/23
4960
火币前CTO操盘,交易即挖矿,暴涨18倍,Fcoin有望成下一个HT
推荐阅读
飞速崛起!ABCC全球排名前五,ETH交易对全球第一
9540
1分钟链圈|研究发现:今年全球ICO融资额近53亿美元!何玺:挖矿将成平民化运动,或可助国产“芯片”弯道超车
6430
疯狂TTF,7月8日一天分1000个BTC,7毛分3毛
5310
『7.2-7.8』数字资产交易所情报纵览
6970
以太坊爆发空前燃料危机,交易费高达5862个ETH,罪魁祸首竟是FCoin!
4990
币猫COINCAT—一个95%代币由用户流通做主的交易即挖矿平台
1.7K0
一文弄懂最近大火的BRC-20是什么?
9530
上币费换汤不换药,李笑来:一定要自己开交易所!
1.3K0
1分钟链圈 | 融资5.75亿美元!ICO史上第三大项目诞生;日本将实现“骑行ofo即可挖矿”
4930
加密数字货币交易平台中心化和去中心化之争
6410
对BEX价格的定量预测
6320
肯尼亚成立特别小组,研究人工智能和区块链等最新技术;新型比特币现金社交平台BlockPress现世
5640
1分钟链圈 | 蔡文胜:token不应有分红权!你觉得呢?黑客组织窃取5000万美元加密货币
8350
日交易额曾过10亿 原币交所CEO趙伟带队进军多比交易平台
4610
疯狂的DeFi:开发者仅一人,一天暴涨40倍
3090
1分钟链圈 | 闪电网络将成为真正去中心化的交易所!清华大学研究团队申请“区块链+文化遗产保护”专利
5290
交易所变革2.0:Fcoin开交易挖矿之先河,利益真正回馈社区
4990
像投资比特币一样投资旅游民宿
5440
浅谈EKT多链技术是如何应对黑客攻击的
7040
火币前CTO操盘,交易即挖矿,暴涨18倍,Fcoin有望成下一个HT
4960
相关推荐
飞速崛起!ABCC全球排名前五,ETH交易对全球第一
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档