private static void gf1(float[] c, float[][] x, float[][] g1) { int n2 = x.length; for (int i2=0; i2<n2; ++i2) gf(c,x[i2],g1[i2]); } private static void gf2(float[] c, float[][] x, float[][] g2) {
float[] ym1 = y[i2m1], ym2 = y[i2m2], ym3 = y[i2m3]; float[] yp1 = y[i2p1], yp2 = y[i2p2], yp3 = y[i2p3]; gf(C71,x[i2],g1); for (int i1=0; i1<n1; ++i1) { d.getTensor(i1,i2,di);
float[][] g1 = new float[n2][n1]; float[][] g2 = new float[n2][n1]; gf(C71,x[i3],g1,g2); for (int i2=0; i2<n2; ++i2) { float[] xm1 = x[i3m1][i2], xm2 = x[i3m2][i2], xm3 = x[i3m3][i2];
private static void testGrad1() { int n = 21; float[] x = randfloat(n); float[] y = randfloat(n); //float[] x = zerofloat(n); x[0] = x[n/2] = x[n-1] = 1.0f; //float[] y = zerofloat(n); y[0] = y[n/2] = y[n-1] = 1.0f; float[] gx = zerofloat(n); float[] gy = zerofloat(n); gf(C71,x,gx); // Gx gt(C71,y,gy); // G'y dump(gx); dump(gy); float ygx = sum(mul(y,gx)); // y'Gx float xgy = sum(mul(x,gy)); // x'G'y trace("ygx="+ygx); trace("xgy="+xgy); } private static void testGrad2() {
private static void testGrad2() { int n1 = 11; int n2 = 21; float[][] x = randfloat(n1,n2); float[][] y1 = randfloat(n1,n2); float[][] y2 = randfloat(n1,n2); float[][] y = zerofloat(n1,n2); float[][] x1 = zerofloat(n1,n2); float[][] x2 = zerofloat(n1,n2); gf(C71,x,x1,x2); gt(C71,y1,y2,y); float ygx = sum(add(mul(y1,x1),mul(y2,x2))); float xgy = sum(mul(x,y)); trace("ygx="+ygx); trace("xgy="+xgy); } public static void main(String[] args) {