文章目录
- 机器学习的框架
- tensorflow 2.0
- 环境配置
机器学习的框架
scikit-learn, 传统的机器学习框架,不支持深度学习和GPU加速计算;
caffe, 深度学习框架,发展到pytorch
keras, 深度学习的包裹器
tensorflow,google开源的深度学习框架,tensorflow1.0调试困难、API混乱 -->2.0
MXNet, 深度学习框架
tensorflow 2.0
中文官网
优点如下:
- GPU 加速;
- 相对于CPU来说,可以优化计算速度约100倍;
- tf.random.normal([10000, 1000]) 生成两个较大的矩阵(10000*1000);
- tf.matmul(matrix_a, matrix_b) 计算矩阵的相乘;
- 使用timeit 测试基于CPU和基于GPU运行的时间;
import tensorflow as tf
import timeit
# cpu
with tf.device("/cpu:0"):
c_a = tf.random.normal([10000, 1000])
c_b = tf.random.normal([1000, 2000])
print(c_a.device, c_b.device)
# gpu
with tf.device("/gpu:0"):
g_a = tf.random.normal([10000, 1000])
g_b = tf.random.normal([1000, 2000])
print(g_a.device, g_b.device)
def cpu_run():
with tf.device("/cpu:0"):
result = tf.matmul(c_a, c_b)
return result
def gpu_run():
with tf.device("/gpu:0"):
result = tf.matmul(g_a, g_b)
return result
if __name__ == '__main__':
# 热身
c_t = timeit.timeit(cpu_run, number=20)
g_t = timeit.timeit(gpu_run, number=20)
print(c_t, g_t)
c_t = timeit.timeit(cpu_run, number=20)
g_t = timeit.timeit(gpu_run, number=20)
print(c_t, g_t)
- 自动求导
- with tf.GradientTape() as tape:
- 神经网络api
- tf.matmul, 矩阵相乘;
- tf.layers.Dense 全连接层;
- tf.layers.Conv2D 卷积层;
- tf.layers.SimpleRNN 简单的循环神经网络;
- tf.layers.LSTM 长短期记忆网络;
- tf.layers.MaxPool2D 最大池化层;
- tf.layers.ReLU 线程修正单元;
- tf.nn.relu/sigmoid/softmax 激活函数;
环境配置
- windows10 系统安装
-
Anaconda软件安装(python3.7+)
-
必须有显卡,查看显卡信息
- win+r, 输出dxdiag;
- 信息弹窗,点击显卡;
要求NVIDIA显卡
,GTX 1060 6GB 或者GTX1080Ti 11GB(性能 > 1650Ti > 1650);
-
CUDA10.0 安装(gpu计算加速库)
-
下载地址
-
快速连接
-
双击+自定义安装+取消GeForce选项+ CUDA选项(取消Visual Studio整合项)+ Driver组件(Display Driver版本需大于当前版本,否则取消)
-
安装完成后确认两个文件
-
nvcc.exe
-
v10/extra/CUPTI/libx64/cupti64_100.dll
-
-
-
cudnn安装, 神经网络加速库
- 下载地址
- cudnn历史版本,选择for CUDA10
注册账号,下载并解压,重命名为cudnn,放到上一步的v10目录下
-
环境变量配置
-
命令行输入nvcc -V测试
-
安装tensorflow
-
# cpu版本
pip install tensorflow # tensorflow-gpu gpu版本
# pip install tensorflow==version
# 进入ipython
import tensorflow as tf
a = tf.constant(1) # 常量 张量
b = tf.constant(2) #
c = tf.add(a, b)
print(int(c), c.numpy())
# 测试gpu是否可用
tf.test.is_gpu_available()
tf.config.list_physical_devices("GPU")