SAGAN程式除錯中遇到的一些問題總結

2021-09-02 00:14:02 字數 1209 閱讀 7348

(1)執行程式過程中出現了interrupted by signal6:sigabrt 的錯誤,並提示無法找到cudnn的控制代碼

解決方法:在指定的gpu上面執行程式

import os

os.environ["cuda_visible_devices"]="3"

(2)sagan 是如何實現將乙個1×1×128維的雜訊轉變成影象的

在輸入端通過tf.nn.conv2d_transpose函式輸出4×4大小的feature(transpose函式有乙個引數out_shape可以指定輸出feature的寬度和高度),然後就可以採用正常的影象卷積方式進行逐步upsample-conv的形式得到指定大小的輸出影象

(3)sagan中的attention layer

f = conv(x, ch // 8, kernel=1, stride=1, sn=sn, scope='f_conv')
g = conv(x, ch // 8, kernel=1, stride=1, sn=sn, scope='g_conv')
h = conv(x, ch, kernel=1, stride=1, sn=sn, scope='h_conv')
這裡的f和g 用來計算attention map,輸出的feature 個數 遵從原文中的wg(c/8*c)

計算attention map: f進行轉置後與g進行內積計算

s = tf.matmul(hw_flatten(g), hw_flatten(f), transpose_b=true)
hw_flatten(g):將二維feature展開成一維向量

tf.reshape(x, shape=[x.shape[0], -1, x.shape[-1]])將原本的feature維度由[32,16,16,32]reshape成為[32,256,32]

注意這裡reshape的引數shape必須是乙個確定的值,x.shape[0]或者x.shape[-1]的取值不能是none

hw_flatten(f):同上

將二維feature展開成一維之後,就可以進行矩陣的內積運算了

內積運算的結果經過softmax進行歸一化處理,與h進行內積運算,然後再次reshape成為[32,16,16,256]self-attention maps

(4)sagan中的sn操作

svn branch merge中遇到的一些問題

拉分支的時候,選擇svn branch 在彈出的框中需要選擇目標位址,不過這個有乙個問題就是,這個目標位址不能是已經建立好的,必須至少要有一級目錄還是未建立的,比如想要拉分支到目錄branch 那你最多只能在本地建立乙個branch目錄,這個 是必須要手動輸入到 from branch 否則就會報 ...

一些遇到的有趣的程式題

程式是計算陣列直方圖最大矩形面積,直方圖每列寬度為1,如的最大矩形面積是7 2 14 思路 從左往右,從a 0 到a n 1 依次計算能和a i 組成矩形的最大面積,因為只有大於或者等於a i 才能和a i 組成矩形塊 所以分別從a i 開始,從左擴充套件計算能和a i 組成的矩形的塊數,再往右計算...

開發ReportViewer中遇到的一些問題

1.每頁顯示多少行由report的interactivesize height屬性決定,規則是 height 行數 0.63492 每行的高度 2.如何顯示表頭,選擇用xml格式開啟report檔案,在 after true 加上這句話就可以了。屬性裡找不到,只可以在這裡加 3.pagecountm...