原创 matlab練習程序(LQR路徑跟蹤)

LQR 是一種優化控制方法,設計目標是找到一組控制輸入,使得線性系統的狀態軌跡儘可能地接近目標,同時使控制輸入儘可能小。其目標函數是一個二次型成本函數。 分爲以下幾個步驟: 1. 設系統動態方程爲: 其中x爲狀態量,u爲控制輸入,A和B爲

原创 【Python】強化學習SARSA走迷宮

之前有實現Q-Learning走迷宮,本篇實現SARSA走迷宮。 Q-Learning是一種off-policy算法,當前步採取的決策action不直接作用於環境生成下一次state,而是選擇最優的獎勵來更新Q表。 更新公式: SARSA

原创 matlab練習程序(線性常微分方程組矩陣解)

之前有通過ode和simulink解線性常微分方程組。 除了上面兩種方法,線性常微分方程組還可以通過矩陣的方法求解。 比如下面這個之前使用的方程組: x'' = x' - x + y' -z' y'' = y' - y - x' z'' =

原创 【Python】保存gym截圖

如果想做基於圖像cnn的深度強化學習,需要拿到gym的截圖,下面是兩種截圖方法。 1. 利用render結果生成圖像: import gym import warnings import os from PIL import Image

原创 【Python】Q-Learning處理CartPole-v1

上一篇配置成功gym環境後,就可以利用該環境做強化學習仿真了。 這裏首先用之前學習過的qlearning來處理CartPole-v1模型。 CartPole-v1是一個倒立擺模型,目標是通過左右移動滑塊保證倒立杆能夠儘可能長時間倒立,最長步

原创 【Python】安裝配置gym

gym是python中的一個強化學習環境,想要完整配置並跑起來坑還是比較多的。 下面記錄一下Windows完整安裝過程,Linux下過程基本類似。 1. 執行pip install gym直接安裝的是0.26.2版本,網上常見的代碼無法兼容

原创 matlab練習程序(Pure Pursuit路徑跟蹤)

當時寫stanley就實現了,貼上來記錄一下。 方法示意圖: 控制率公式: 其中L爲軸距,e爲橫向誤差,v爲車輛速度,lambda和c爲控制參數。 算法步驟如下: 1. 根據當前定位結果找到路徑最鄰近點。 2. 計算該點與定位結果橫向誤

原创 深度學習(單機多gpu訓練)

如果一個機器上有多個gpu,可以使用多gpu訓練。 一般數據量和模型比較大的時候訓練速度會有明顯的提升,模型和數據比較小的時候反而可能因爲數據通信原因導致性能下降。 下面是一個簡單的例子: import time import torch

原创 【Python】可視化Python庫的依賴關係

這裏主要用了兩個庫:pipdeptree和pyecharts。 pipdeptree用來解析所有庫的依賴關係。 pyecharts用來顯示依賴的網絡關係。 通常的方法應該是通過輸入下面命令: pipdeptree --json-tree

原创 深度學習(混合精度訓練)

混合精度訓練通常會結合使用單精度浮點數(float32)和半精度浮點數(float16),以提高訓練效率和減少內存佔用。 代碼中關鍵在於兩個地方: 1. 在with autocast():下,模型的前向傳播和損失計算放在自動混合精度加速環境

原创 解決nvidia-smi報錯:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

昨天一切正常,今天ubuntu啓動突然卡住了,一直停在黑屏光標界面。 在網上看到原因可能和nvidia驅動有關。 輸入nvidia-smi報出題目中的錯誤。 一般這種錯誤都是在剛安裝nvidia驅動後第一次啓動可能出現,見我這篇文章。 不過

原创 matlab練習程序(Schur補)

Schur 補是一種矩陣分解方法,通過將一個大的矩陣分解爲幾個較小的矩陣來簡化計算,通常能夠提高矩陣求逆的速度。 對於形如下面的矩陣: 可以把矩陣劃分爲左上、右上、左下、右下四個分塊矩陣。 得到矩陣: 根據A和D的奇異性,可以分兩種情況

原创 【Python】強化學習Q-Learning走迷宮

Q-Learning是一種基於值函數的強化學習算法,這裏用該算法解決走迷宮問題。 算法步驟如下: 1. 初始化 Q 表:每個表格對應狀態動作的 Q 值。這裏就是一個H*W*4的表,4代表上下左右四個動作。 2. 選擇動作: 根據 Q 表格選

原创 解決編譯報錯——Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1

編譯有些python庫時可能會報這個錯。 解決方法是: 將setup.py中的“cmdclass={'build_ext': BuildExtension}”改爲“cmdclass={'build_ext': BuildExtension.

原创 解決編譯報錯——too few arguments for template template parameter “Tuple“detected

一般出現這種問題都是cuda、pytorch或vs版本沒配對上。 這裏出現問題的文件爲torch中的cast.h。 我看網上很多給的解決方法是修改下面代碼: template <template <typename...> class T