历史回顾
2015.9 tf0.1
2017.2 tf1.0
2019春 tf2.0
2015Tensorflow刚发布时 :
- scikit-learn
- machine learning
- no GPU
- caffe
- 2013 第一个深度学习的框架
- no auto grad, base on C++
- keras
- api/wrapper
- Theano
- 开发和调试困难
- Torch
- base on lua,新手不友好
Torch > PyTorch
Caffe2(+FB) > PyTorch(1.x)
Theono(停止开发)(+ Google)> Tensorflow > Tensorflow2.x
2017
- Tensorflow1.x
- PyTorch0.1
简单对比 :
#tensorflow 1.x
import tensorflow as tf
a = tf.constant(1)
b = tf.constant(3)
c = tf.add(a,b)
with tf.Session() as sess:
c_val = sess.run(c)
print(c_val)
#PyTorch
import torch
a = torch.tensor(1.)
b = torch.tensor(3.)
c = torch.add(a, b)
print(c.item())
Tensorflow 1.x:
- 调试难
- api混乱
- 难以精通
2019:
- Tensorflow2.0
- Tensorflow+keras
- ez to use
#tensorflow 2.x
import tensorflow as tf
a = tf.constant(1)
b = tf.constant(3)
c = tf.add(a,b)
print(float(c))
- tf人多,影响大
- 学术界使用PyTorch很多
Can learning Tensorflow2.0 without Tensorflow1.x
Tensorflow ecosystem:
- Tensorflow2.0
- Tensorflowlite
- Tensorflow.js
- Tensorflow extend
- Tensorflow prob
- TPU Cloud
所以PyTorch 和 Tensorflow2.0选一个掌握就好,但是两个都建议了解
- Tensorflow + keras > Tensorflow2.x
- PyTorch + Caffe2 >PyTorch1.x
Why Tensorflow/PyTorch framework?
- GPU
- Auto Grad
- NN API
环境配置
开发环境:
-
anaconda + pycharm pro + Python3.7 + tensorflow2.0
-
虽然社区版是免费的,但是不能远程调试,所以pycharm还是要专业版,还好学生可以白嫖,问题不大。
软件的安装不提
由于我笔记本gpu太垃圾,tf不支持,所以只能下cpu版的
conda create -n <env_name> python=3.7 tensorflow
这样就在anaconda下新建了一个环境
但是我还有服务器啊~
conda create -n <env_name> python=3.7 tensorflow-gpu
把env_name替换成自己想要的环境名就行了
jupyter虽然很好用,但是还是需要一款IDE,接下来要完成PyCharm本地+远程的配置
本地
-
本地配置
就两步:- 选择项目位置
- 选择解释器
接下来可以新建一个python文件测试一下是不是安装完成
import tensorflow as tf import os #如果不喜欢大段大段的输出,可以加上这一行 #os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' print('GPU', tf.test.is_gpu_available()) a = tf.constant(2.) b = tf.constant(4.) print(a*b)
GPU可用性这里本地显示的是False,因为本地装的是cpu版的,如果要装GPU版的,还需要安装cudnn和cuda,网上的教程很多,注意版本号,在此不赘述。
远程同步
本地主要就是看看跑不跑的起来,实际上还是要上服务器,接下来主要是pycharm远程访问的配置:
- 打开deployment的configuration
- 新建一个配置,选sftp,输入服务器的ip和密码,根目录就选你有权限的的那个目录,也可以autodetect,web那个默认就行。
- 设置映射
local path 是你本地路径
deployment path 是你相对于root path的相对路径
完成配置,接下来再打开deployment,选择upload to,里面就有你刚刚配置的选项了,这样你就可以将本地代码上传到远程服务器了。
远程调试
-
接下来配置远程的解释器:
打开file|settings,在project中找到project interpreter,然后点击下拉栏右侧的设置图标,再点击Add…添加一个新的解释器:
可以新建,也可以选择之前创建的配置,这里我选择之前创建的
选择远程解释器的路径,我远程用的是conda,要根据自己所使用的环境找到对应的解释器。
同步文件夹根据自己的需要配置。完成
由于实验室有好几张卡,不能贸然测试,先用nvidia-smi看一下哪张卡空着,然后使用以下代码测试,在测试前记得把代码上传同步:
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #将可见的设备选成能用的那张卡 os.environ['CUDA_VISIBLE_DEVICES'] = "3" print('GPU', tf.test.is_gpu_available()) a = tf.constant(2.) b = tf.constant(4.) print(a*b) print(a+b)
跑通了
GPU True tf.Tensor(8.0, shape=(), dtype=float32) tf.Tensor(6.0, shape=(), dtype=float32) Process finished with exit code 0
更多tensorflow中gpu的使用方法可以简单参考官方文档