一、gan的思想
gan的核心所做的事情是在解決乙個argminmax的問題,公式:
1、求解乙個discriminator,可以最大尺度的丈量generator 產生的資料和真實資料之間的分布距離
2、求解乙個generator,可以最大程度減小產生資料和真實資料之間的距離
gan的原始公式如下:
實際上,我們不可能真求期望,只能sample出data來近似求解,於是,公式變成如下:
於是,求解v的最大值,變成了乙個二分類問題,變成了求交叉熵的最小值。
二、**
public class gan
indarray trueexp = train.next().getfeatures();
indarray z = nd4j.rand(new long , new normaldistribution());
multidataset datasetd = new org.nd4j.linalg.dataset.multidataset(new indarray ,
new indarray );
for(int m=0;m<10;m++)
z = nd4j.rand(new long , new normaldistribution());
multidataset datasetg = new org.nd4j.linalg.dataset.multidataset(new indarray ,
new indarray );
traing(net, datasetg);
if (i % 10000 == 0)
} }public static void traind(computationgraph net, multidataset dataset)
public static void traing(computationgraph net, multidataset dataset)
}
說明:
1、dl4j並沒有提供像keras那樣凍結某些層引數的方法,這裡採用設定learningrate為0的方法,來凍結某些層的引數
2、這個的更新器,用的是sgd,不能用其他的(比方說adam、rmsprop),因為這些自適應更新器會考慮前面batch的梯度作為本次更新的梯度,達不到不更新引數的目的
3、這裡用了stackvertex,沿著第一維合併張量,也就是合併真實資料樣本和generator產生的資料樣本,共同訓練discriminator
4、訓練過程中多次update discriminator的引數,以便量出最大距離,讓後更新generator一次
5、進行10w次迭代
三、generator生成手寫數字
載入訓練好的模型,隨機從normaldistribution取出一些噪音資料,丟給模型,經過feedforward,取出最後一層generator的啟用值,便是我們想要的結果,**如下:
public class loadgan , new normaldistribution()), trueexp }, false);
indarray indarray = map.get("g3");// .reshape(20,28,28);
listlist = new arraylist<>();
for (int j = 0; j < indarray.size(0); j++)
mnistvisualizer bestvisualizer = new mnistvisualizer(1, list, "gan");
bestvisualizer.visualize(); }
public static class mnistvisualizer
public mnistvisualizer(double imagescale, listdigits, string title, int gridwidth)
public void visualize()
frame.add(panel);
frame.setvisible(true);
frame.pack();
} public listgetcomponents()
imageicon orig = new imageicon(bi);
image imagescaled = orig.getimage().getscaledinstance((int) (imagescale * 28), (int) (imagescale * 28),
image.scale_default);
imageicon scaled = new imageicon(imagescaled);
images.add(new jlabel(scaled));
}return images;
} }}
實際效果,還算比較清晰
快樂源於分享。
如何用軟文推廣
如何用軟文推廣呢?2 作為 魚餌 讓客戶通過付出一些行動,比如幫忙推廣10個ip,或者通過加qq,留下郵箱 手機號等方式,獲得大量的精準潛在客戶資料庫,最大化軟文的效率。高質量軟文製作技巧 寫作軟文前,一定要做好規劃,明確軟文推廣要達到的目的,了解消費者的對產品的各種問題和顧慮,針對性的提出解決方案...
如何用gitbook寫書
生成一本小書,它有前言,章節1,章節2,後記。例如 簡介 第一章 如何造火箭 1.燃料學 2.空氣動力學 3.工程學 第二章 如何 火箭 1.自動控制原理 2.二次利用要點 結束建乙個寫書的目錄,以後所有工作都在這個目錄下搞。例如 users raywill gitbook first在電腦上建立整...
如何用好Google?
如何提高自己的搜尋技術?男性凱格爾運動 掌握搜尋邏輯和搜尋思路。願意為優質的付費是高效的解決問題思路。盡量少使用搜尋引擎 針對不同的問題使用不同的資料庫。搜尋心法 找什麼 找 怎麼找。搜尋技巧 遇到問題 第一件事就是搜尋 搜尋。搜尋也是可以轉變思維方式 書友沙龍 可直接看轉化為 樊登讀書會 舉辦的讀...