public TFOutput Sampleb(TFGraph graph) { int seed = Global.Random.Next(0, int.MaxValue); TFOutput eps = graph.Cast(graph.RandomNormal(graph.GetTensorShape(Mu_b), 0, 1, seed), TFDataType.Float); TFOutput sigma_b = NNOperations.LogTrans(graph, Phi_b); return(graph.Add(graph.Mul(eps, sigma_b), Mu_b)); }
public TFOutput Samplez(TFGraph graph, TFOutput act) { TFOutput mu = graph.Add(graph.MatMul(act, Mu_W), Mu_b); TFOutput sigma = graph.Sqrt(graph.Add(graph.MatMul(graph.Square(act), graph.Square(NNOperations.LogTrans(graph, Phi_W))), graph.Square(NNOperations.LogTrans(graph, Phi_b)))); int seed = Global.Random.Next(0, int.MaxValue); TFOutput eps = graph.Cast(graph.RandomNormal(new TFShape(Global.TFMAXBATCHSIZE, graph.GetShape(mu)[1]), 0, 1, seed), TFDataType.Float); eps = graph.Slice(eps, graph.Const(new int[] { 0, 0 }), graph.Shape(mu)); return(graph.Add(graph.Mul(eps, sigma), mu)); }