1.啓動tensorboard
解析:tensorboard --logdir ./data/autograph/
2.Tensorflow自動微分機制
解析:Tensorflow一般使用梯度磁帶tf.GradientTape來記錄正向運算過程,然後反播磁帶自動得到梯度值。這種利用tf.GradientTape求微分的方法叫做Tensorflow的自動微分機制。
3.tf.GradientTape()求二階導數
解析:
with tf.GradientTape() as tape2:
with tf.GradientTape() as tape1:
y = a*tf.pow(x,2) + b*x + c
dy_dx = tape1.gradient(y,x)
dy2_dx2 = tape2.gradient(dy_dx,x)
print(dy2_dx2)
4.使用autograph求導數
解析:
@tf.function
def f(x):
a = tf.constant(1.0)
b = tf.constant(-2.0)
c = tf.constant(1.0)
# 自變量轉換成tf.float32
x = tf.cast(x,tf.float32)
with tf.GradientTape() as tape:
tape.watch(x)
y = a*tf.pow(x,2)+b*x+c
dy_dx = tape.gradient(y,x)
return((dy_dx,y))
tf.print(f(tf.constant(0.0)))
tf.print(f(tf.constant(1.0)))
5.optimizer.minimize
解析:optimizer.minimize相當於先用tape求gradient,再apply_gradient
6.TensorFlow API
解析:
[1]TensorFlow的低階API主要包括張量操作,計算圖和自動微分。
[2]TensorFlow的中階API主要包括各種模型層,損失函數,優化器,數據管道,特徵列等等。
[3]TensorFlow的高階API主要爲tf.keras.models提供的模型的類接口。
7.使用Keras接口3種方式構建模型
[1]使用Sequential按層順序構建模型
[2]使用函數式API構建任意結構模型
[3]繼承Model基類構建自定義模型
8.MirroredStrategy過程
解析:
[1]訓練開始前,該策略在所有N個計算設備上均各複製一份完整的模型;
[2]每次訓練傳入一個批次的數據時,將數據分成N份,分別傳入N個計算設備[即數據並行];
[3]N個計算設備使用本地變量[鏡像變量]分別計算自己所獲得的部分數據的梯度;
[4]使用分佈式計算的All-reduce操作,在計算設備間高效交換梯度數據並進行求和,使得最終每個設備都有了所有設備的梯度之和;
[5]使用梯度求和的結果更新本地變量[鏡像變量];
[6]當所有設備均更新本地變量後,進行下一輪訓練[即該並行策略是同步的]。
9.Ubuntu 18.04安裝CUDA 10.2
解析:
sudo /usr/local/cuda-10.2/bin/cuda-uninstaller
sudo rm -rf /usr/local/cuda-10.2
# 徹底卸載N卡驅動
sudo apt remove --purge nvidia*
10.CUPTI
解析:The CUDA Profiling Tools Interface (CUPTI) enables the creation of profiling and tracing tools that target CUDA applications. CUPTI provides the following APIs:
[1]the Activity API
[2]the Callback API
[3]the Event API
[4]the Metric API
[5]the Profiler API
11.使用apt安裝CUDA,Ubuntu 18.04 [CUDA 10.1]
解析:
# Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
# Install NVIDIA driver
sudo apt-get install --no-install-recommends nvidia-driver-418
# Reboot. Check that GPUs are visible using the command: nvidia-smi
# Install development and runtime libraries (~4GB)
sudo apt-get install --no-install-recommends \
cuda-10-1 \
libcudnn7=7.6.4.38-1+cuda10.1 \
libcudnn7-dev=7.6.4.38-1+cuda10.1
# Install TensorRT. Requires that libcudnn7 is installed above.
sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 \
libnvinfer-dev=6.0.1-1+cuda10.1 \
libnvinfer-plugin6=6.0.1-1+cuda10.1
12.nvGRAPH
解析:圖分析庫。
參考文獻:
[1]自動微分機制:https://lyhue1991.github.io/eat_tensorflow2_in_30_days/2-3,%E8%87%AA%E5%8A%A8%E5%BE%AE%E5%88%86%E6%9C%BA%E5%88%B6.html
[2]GPU支持:https://www.tensorflow.org/install/gpu#linux_setup
[3]
[4]
[5]