亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? node.h

?? The library is a C++/Python implementation of the variational building block framework introduced in
?? H
?? 第 1 頁 / 共 3 頁
字號:
// -*- C++ -*-//// This file is a part of the Bayes Blocks library//// Copyright (C) 2001-2006 Markus Harva, Antti Honkela, Alexander// Ilin, Tapani Raiko, Harri Valpola and Tomas 謘tman.//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License (included in file License.txt in the// program package) for more details.//// $Id: Node.h 7 2006-10-26 10:26:41Z ah $#ifndef NODE_H#define NODE_H#include <string>#include <map>#include "Templates.h"#include "Saver.h"#include "Loader.h"#include "Decay.h"#include "Net.h"class Node;#ifndef BUILDING_SWIG_INTERFACEtypedef bool BOOLASOBJ;#endifenum partype_e {  REAL_MV, REAL_ME, REAL_M, REALV_MV, REALV_ME, REALV_M, DISCRETE,  DISCRETEV};class NodeBase{public:  virtual ~NodeBase() { }  virtual int ParIdentity(const Node *ptr) = 0;  virtual size_t NumParents() = 0;  virtual Node *GetParent(size_t i) = 0;  virtual int RemoveParent(const Node *ptr) = 0;protected:  virtual void ReallyAddParent(Node *ptr) = 0;  virtual bool ParReplacePtr(const Node *oldptr, Node *newptr) = 0;};class Node : public virtual NodeBase{public:  friend Net::Net(NetLoader *loader);  virtual ~Node() { }  void NotifyDeath(Node *ptr, int verbose = 0);  virtual void NotifyTimeType(int tt, int verbose = 0);  void ReplacePtr(Node *oldptr, Node *newptr);  void AddChild(Node *ptr) {children.push_back(ptr);}protected:  Node(Net *ptr, Label label);#ifndef BUILDING_SWIG_INTERFACE  Node(Net *ptr, NetLoader *loader, bool isproxy = 0);#endif  void AddParent(Node *ptr, bool really=true);public:  virtual bool GetReal(DSSet &val, DFlags req) { return false; }  virtual void GradReal(DSSet &val, const Node *ptr) {}  virtual bool GetRealV(DVH &val, DFlags req) {    val.vec = 0; return GetReal(val.scalar, req); }  virtual void GradRealV(DVSet &val, const Node *ptr) {}#ifdef BUILDING_SWIG_INTERFACE  virtual BOOLASOBJ GetDiscrete(DD *&val) { return false; }#else  virtual bool GetDiscrete(DD *&val) { return false; }#endif  virtual void GradDiscrete(DD &val, const Node *ptr) {}  virtual bool GetDiscreteV(VDDH &val) {    val.vec = 0; return GetDiscrete(val.scalar); }  virtual void GradDiscreteV(VDD &val, const Node *ptr) {}  virtual void Outdate(const Node *ptr) { OutdateChild(); }  void CheckParent(size_t parnum, partype_e partype);  bool ParReal(int i, DSSet &val, const DFlags req) {    return GetParent(i)->GetReal(val, req);}  bool ParRealV(int i, DVH &val, const DFlags req) {    return GetParent(i)->GetRealV(val, req);}  bool ParDiscrete(int i, DD *&val) {    return GetParent(i)->GetDiscrete(val);}  bool ParDiscreteV(int i, VDDH &val) {    return GetParent(i)->GetDiscreteV(val);}  void ChildGradReal(DSSet &val);  void ChildGradRealV(DVSet &val);  void ChildGradDiscrete(DD &val);  void ChildGradDiscreteV(VDD &val);  Label GetLabel() const { return label; }  string GetIdent() const { return GetType() + " node " + GetLabel(); }  Net *GetNet() const { return net; }  virtual string GetType() const = 0;  int TimeType() { return timetype; }  int GetDying() { return dying; }  void Die(int verbose = 0);  void OutdateChild();  virtual void Save(NetSaver *saver);  size_t NumChildren() { return children.size(); }  Node *GetChild(size_t i) {return i < children.size() ? children[i] : 0;}  int GetPersist() { return persist; }  void SetPersist(int p) { persist = p; }protected:  vector<Node *> children;  Net *net;  Label label;  int persist, timetype;  bool dying;};class NullParNode : public virtual NodeBase{public:  virtual int ParIdentity(const Node *ptr) {return -1;}  virtual size_t NumParents() { return 0; }  virtual Node *GetParent(size_t i) {return 0;}  virtual int RemoveParent(const Node *ptr) {return 0;}protected:  virtual void ReallyAddParent(Node *ptr) {return;}  virtual bool ParReplacePtr(const Node *oldptr, Node *newptr) {return false;}};class UniParNode : public virtual NodeBase{private:  Node *parent;public:  UniParNode(Node *p) : parent(p) {}  virtual int ParIdentity(const Node *ptr) { return ptr==parent ? 0 : -1;}  virtual size_t NumParents() { return parent!=0; }  virtual Node *GetParent(size_t i) {return i==0 ? parent : 0;}  virtual int RemoveParent(const Node *ptr);protected:  virtual void ReallyAddParent(Node *ptr) { parent = ptr; }  virtual bool ParReplacePtr(const Node *oldptr, Node *newptr) {    return (parent==oldptr) ? (parent=newptr) : false; }};class BiParNode : public virtual NodeBase{private:  Node *parents[2];public:  BiParNode(Node *p1, Node *p2) { parents[0]=p1; parents[1]=p2; }  virtual int ParIdentity(const Node *ptr);  virtual size_t NumParents() { return parents[0] == 0 ? 0 :      (parents[1] == 0 ? 1 : 2); }  virtual Node *GetParent(size_t i) {return i < 2 ? parents[i] : 0;}  virtual int RemoveParent(const Node *ptr);protected:  virtual void ReallyAddParent(Node *ptr);  virtual bool ParReplacePtr(const Node *oldptr, Node *newptr);};class NParNode : public virtual NodeBase{private:  vector<Node *> parents;  map<const Node *, int> parent_inds;public:  NParNode(Node *p1=0, Node *p2=0, Node *p3=0, Node *p4=0, Node *p5=0) {    if (p1) parents.push_back(p1);    if (p2) parents.push_back(p2);    if (p3) parents.push_back(p3);    if (p4) parents.push_back(p4);    if (p5) parents.push_back(p5);  }  virtual int ParIdentity(const Node *ptr);  virtual size_t NumParents() { return parents.size(); }  virtual Node *GetParent(size_t i) {return i < parents.size() ? parents[i] : 0;}  virtual int RemoveParent(const Node *ptr);protected:  virtual void ReallyAddParent(Node *ptr) { parents.push_back(ptr); }  virtual bool ParReplacePtr(const Node *oldptr, Node *newptr);};class Constant : public Node, public NullParNode{public:  Constant(Net *net, Label label, double v) : Node(net, label) {cval = v;}#ifndef BUILDING_SWIG_INTERFACE  Constant(Net *net, NetLoader *loader);#endif  void NotifyTimeType(int tt, int verbose=0) {}  bool GetReal(DSSet &val, DFlags req) {    if (req.mean) {val.mean = cval; req.mean = false;}    if (req.var) {val.var = 0; req.var = false;}    if (req.ex) {val.ex = exp(cval); req.ex = false;}    return req.AllFalse();  }  void GradReal(DSSet &val, const Node *ptr) {}  void Save(NetSaver *saver);  string GetType() const { return "Constant"; }private:  double cval;};class ConstantV : public Node, public NullParNode{public:  ConstantV(Net *net, Label label, DV v);#ifndef BUILDING_SWIG_INTERFACE  ConstantV(Net *net, NetLoader *loader);#endif  void NotifyTimeType(int tt, int verbose=0) {}  bool GetRealV(DVH &val, DFlags req) {    val.vec = &myval;    req.mean = false;    req.var = false;    req.ex = false;    return req.AllFalse();  }  void Save(NetSaver *saver);  string GetType() const { return "ConstantV"; }private:  DVSet myval;};class Function : public Node{public:  void Outdate(const Node *ptr)   {    uptodate = DFlags(false,false,false);     OutdateChild();  }  virtual void Save(NetSaver *saver);protected:  Function(Net *ptr, Label label, Node *n1 = 0, Node *n2 = 0);#ifndef BUILDING_SWIG_INTERFACE  Function(Net *ptr, NetLoader *loader);#endif  DFlags uptodate;};class Prod : public Function, public BiParNode{public:  Prod(Net *ptr, Label label, Node *n1, Node *n2) :    Function(ptr, label, n1, n2), BiParNode(n1, n2) {mean = 0.0; var = 0.0;}#ifndef BUILDING_SWIG_INTERFACE  Prod(Net *ptr, NetLoader *loader);#endif  bool GetReal(DSSet &val, DFlags req);  void GradReal(DSSet &val, const Node *ptr);  void Save(NetSaver *saver);  string GetType() const { return "Prod"; }private:  double mean, var;};class Sum2 : public Function, public BiParNode{public:  Sum2(Net *ptr, Label label, Node *n1, Node *n2) :     Function(ptr, label, n1, n2), BiParNode(n1, n2) {    persist = 4 | 8; // Sum2 needs at least one child and cuts off if                     // there is only one parent  }#ifndef BUILDING_SWIG_INTERFACE  Sum2(Net *ptr, NetLoader *loader);#endif  bool GetReal(DSSet &val, DFlags req);  void GradReal(DSSet &val, const Node *ptr);  void Save(NetSaver *saver);  string GetType() const { return "Sum2"; }private:  DSSet myval;};class SumN : public Function, public NParNode{public:  SumN(Net *net, Label label) :     Function(net, label)  {    persist = 4 | 8; // SumN needs at least one child and cuts off if                     // there is only one parent    keepupdated = false;  }#ifndef BUILDING_SWIG_INTERFACE  SumN(Net *net, NetLoader *loader);#endif  bool AddParent(Node *n);  bool GetReal(DSSet &val, DFlags req);  void GradReal(DSSet &val, const Node *ptr);  void Save(NetSaver *saver);  string GetType() const { return "SumN"; }  void Outdate(const Node *ptr);  void SetKeepUpdated(const bool _keepupdated);private:  DSSet myval;  vector<DSSet> parentval;  bool keepupdated;};class Relay : public Function, public UniParNode{public:  Relay(Net *ptr, Label label, Node *n) :    Function(ptr, label, n), UniParNode(n) {}#ifndef BUILDING_SWIG_INTERFACE  Relay(Net *ptr, NetLoader *loader);#endif  bool GetReal(DSSet &val, DFlags req) {return ParReal(0, val, req);}  void GradReal(DSSet &val, const Node *ptr) {ChildGradReal(val);}  void Save(NetSaver *saver);  string GetType() const { return "Relay"; }};class Variable : public Node{public:  virtual double Cost() = 0;  virtual void Update() {    if (!clamped) {       MyUpdate();       OutdateChild();    }  }  virtual void PartialUpdate(IntV *indices) {    if (!clamped) {      MyPartialUpdate(indices);      OutdateChild();    }  }  void Clamp(double val)  {    if (!MyClamp(val)) {      ostringstream msg;      msg << GetIdent() << ": Double clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Clamp(double mean, double var)  {    if (!MyClamp(mean, var)) {      ostringstream msg;      msg << GetIdent() << ": Double double clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Clamp(const DV &val)  {    if (!MyClamp(val)) {      ostringstream msg;      msg << GetIdent() << ": DV clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Clamp(const DV &mean, const DV &var)  {    if (!MyClamp(mean, var)) {      ostringstream msg;      msg << GetIdent() << ": Double DV clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Clamp(const DD &val) {    if (!MyClamp(val)) {      ostringstream msg;      msg << GetIdent() << ": DD clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Clamp(int val) {    if (!MyClamp(val)) {      ostringstream msg;      msg << GetIdent() << ": Int clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Clamp(const VDD &val) {    if (!MyClamp(val)) {      ostringstream msg;      msg << GetIdent() << ": VDD clamp not allowed";      throw TypeException(msg.str());    }    clamped = true; costuptodate = false;    OutdateChild();  }  void Unclamp() {if (clamped) {clamped = false; MyUpdate(); OutdateChild();}}  void SaveState();  void SaveStep();  void RepeatStep(double alpha);  void SaveRepeatedState(double alpha);  void ClearStateAndStep();  virtual void Outdate(const Node *ptr) {costuptodate = false;}  virtual void Save(NetSaver *saver);  int GetHookeFlags() { return hookeflags; }  void SetHookeFlags(int h) { hookeflags = h; }  bool IsClamped() { return clamped; }  // These two methods are ment for copying things from one network  // to another similar one  // The allocation of the DV instance is left to user  // so it can be done in the jurisdiction of Python's GC.  // The DV is resized, so initially it can be of size zero, for example.  virtual void GetState(DV *state, size_t t = 0) {    ostringstream msg;    msg << "GetState not supported by " << GetType();    throw TypeException(msg.str());  }  virtual void SetState(DV *state, size_t t = 0) {    ostringstream msg;    msg << "SetState not supported by " << GetType();    throw TypeException(msg.str());  }protected:  Variable(Net *ptr, Label label, Node *n1 = 0, Node *n2 = 0);#ifndef BUILDING_SWIG_INTERFACE  Variable(Net *ptr, NetLoader *loader);#endif  virtual bool MyClamp(double val) {return false;}  virtual bool MyClamp(double mean, double var) {return false;}  virtual bool MyClamp(const DV &val) {return false;}  virtual bool MyClamp(const DV &mean, const DV &var) {return false;}  virtual bool MyClamp(const DD &val) {return false;}  virtual bool MyClamp(int val) {return false;}  virtual bool MyClamp(const VDD &val) {return false;}  virtual void MyUpdate() = 0;  virtual bool MySaveState() {return false;}  virtual bool MySaveStep() {return false;}  virtual bool MySaveRepeatedState(double alpha) {return false;}  virtual void MyRepeatStep(double alpha) {}  virtual bool MyClearStateAndStep() {return false; }  virtual void MyPartialUpdate(IntV *indices) {    ostringstream msg;    msg << "Partial updates not supported by " << GetType();    throw StructureException(msg.str());  }      bool clamped, costuptodate;  int hookeflags;};class Gaussian : public Variable, public BiParNode{public:  Gaussian(Net *net, Label label, Node *m, Node *v);#ifndef BUILDING_SWIG_INTERFACE  Gaussian(Net *net, NetLoader *loader);#endif  ~Gaussian() {    if (sstate) delete sstate;    if (sstep) delete sstep;  }  double Cost();  bool GetReal(DSSet &val, DFlags req);  void GradReal(DSSet &val, const Node *ptr);  void Save(NetSaver *saver);  string GetType() const { return "Gaussian"; }  void GetState(DV *state, size_t t);  void SetState(DV *state, size_t t);protected:  virtual bool MyClamp(double m);  virtual bool MyClamp(double m, double v);  virtual void MyUpdate();  bool MySaveState();  bool MySaveStep();  bool MySaveRepeatedState(double alpha);  void MyRepeatStep(double alpha);  bool MyClearStateAndStep();  void MyPartialUpdate(IntV *indices);  DSSet myval;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区国产精品| 波多野结衣视频一区| 国产精品久久福利| 国产色91在线| 中文av字幕一区| 中文字幕一区二区三区视频| 中文字幕av一区二区三区免费看 | 麻豆国产一区二区| 日本美女视频一区二区| 七七婷婷婷婷精品国产| 麻豆免费精品视频| 国产成人综合网站| hitomi一区二区三区精品| 99麻豆久久久国产精品免费| 99久久免费视频.com| 在线精品亚洲一区二区不卡| 欧美色精品在线视频| 日韩小视频在线观看专区| 欧美精品乱人伦久久久久久| 欧美v国产在线一区二区三区| 久久这里都是精品| 亚洲品质自拍视频网站| 亚洲福利视频导航| 国产精品中文有码| 91久久线看在观草草青青| 欧美一区二区三区在线电影| 久久亚洲精品小早川怜子| 亚洲欧美在线aaa| 日日夜夜免费精品| 国产精品一品二品| 精品婷婷伊人一区三区三| 精品国产免费视频| 亚洲精品伦理在线| 国产一区二区三区美女| 欧洲av在线精品| 国产午夜亚洲精品午夜鲁丝片| 亚洲精品第1页| 狠狠色伊人亚洲综合成人| 91在线你懂得| 2017欧美狠狠色| 亚洲国产一区二区三区青草影视| 国产麻豆欧美日韩一区| 日本精品一级二级| 国产天堂亚洲国产碰碰| 亚洲五码中文字幕| 99v久久综合狠狠综合久久| 欧美一卡二卡三卡| 亚洲一区二区三区中文字幕在线| 国内精品伊人久久久久影院对白| 欧美三级资源在线| 国产精品每日更新在线播放网址| 首页亚洲欧美制服丝腿| 色综合天天综合给合国产| 久久久精品一品道一区| 日韩精品一级中文字幕精品视频免费观看 | 欧美在线视频全部完| 国产欧美一区二区精品性色| 奇米在线7777在线精品| 欧美无砖专区一中文字| 中文字幕制服丝袜成人av| 国产精品一二三在| 精品国产免费一区二区三区四区| 亚洲成人动漫在线免费观看| 色综合网色综合| ...xxx性欧美| 99国产精品久久久久久久久久 | 国产精品不卡在线| 国产精品一区二区在线看| 欧美大片在线观看| 日韩成人免费电影| 91精品国产欧美一区二区成人| 亚洲午夜免费视频| 欧美色网一区二区| 亚洲不卡一区二区三区| 欧美色图在线观看| 日韩综合小视频| 91精品在线免费| 秋霞影院一区二区| 精品噜噜噜噜久久久久久久久试看| 午夜免费久久看| 日韩午夜激情视频| 黄色小说综合网站| 中文字幕成人av| 成人aa视频在线观看| 国产精品护士白丝一区av| 波多野结衣在线一区| 亚洲婷婷在线视频| 欧美亚洲一区三区| 蜜臀a∨国产成人精品| 久久午夜老司机| 成人h精品动漫一区二区三区| 国产精品视频yy9299一区| 91麻豆免费在线观看| 亚洲成人精品一区| 久久久一区二区三区| 99国产精品视频免费观看| 性感美女极品91精品| 久久综合色之久久综合| 97久久精品人人澡人人爽| 香蕉成人啪国产精品视频综合网| 日韩精品一区二区三区中文精品| 国产一区二区三区四区五区美女| 国产精品美女久久久久aⅴ| 欧美三电影在线| 国产一区二区福利| 曰韩精品一区二区| 欧美mv日韩mv国产网站app| 成人精品国产免费网站| 午夜欧美视频在线观看| 中文字幕欧美激情一区| 欧美色视频一区| 国产精选一区二区三区| 亚洲综合色婷婷| 久久久蜜桃精品| 欧美少妇性性性| 国产精品白丝av| 日韩在线a电影| 亚洲免费观看高清完整版在线| 日韩免费视频一区二区| 91影院在线免费观看| 国内精品在线播放| 亚洲午夜精品17c| 中文字幕在线免费不卡| 欧美成人女星排行榜| 在线观看一区二区精品视频| 国产大陆a不卡| 日本不卡视频一二三区| 亚洲美女在线国产| 中文字幕av不卡| 精品国产免费人成电影在线观看四季 | 欧美一区二区三区不卡| 91论坛在线播放| 丁香一区二区三区| 国内精品国产成人国产三级粉色| 一区二区三区日韩| 亚洲色图一区二区三区| 国产三级精品在线| 欧美精品一区视频| 884aa四虎影成人精品一区| 99久久99久久久精品齐齐| 国产馆精品极品| 国产老妇另类xxxxx| 蜜桃av一区二区三区| 视频在线在亚洲| 亚洲亚洲精品在线观看| 亚洲久草在线视频| 亚洲精品网站在线观看| 日韩一区在线看| 亚洲视频 欧洲视频| 亚洲欧美偷拍卡通变态| 亚洲人123区| 日韩理论在线观看| 亚洲精品乱码久久久久久久久| 中文字幕制服丝袜一区二区三区 | 91精品国产乱| 欧美一区二区三区小说| 日韩一区二区不卡| 日韩一二三四区| 日韩久久久久久| 久久精品亚洲精品国产欧美| 久久久久高清精品| 自拍偷拍亚洲综合| 亚洲宅男天堂在线观看无病毒| 亚洲伦理在线免费看| 亚洲成人在线免费| 奇米色一区二区| 国产寡妇亲子伦一区二区| 国产91精品一区二区麻豆网站| av不卡一区二区三区| 日本乱人伦aⅴ精品| 6080yy午夜一二三区久久| 666欧美在线视频| 久久久久九九视频| 亚洲色图欧美偷拍| 视频一区视频二区在线观看| 美女高潮久久久| bt7086福利一区国产| 欧美性大战久久久| 精品国产sm最大网站免费看| 国产精品国产自产拍在线| 亚洲国产精品久久久久秋霞影院 | wwwwxxxxx欧美| 亚洲日本一区二区| 日韩福利电影在线| 国产一区欧美二区| 在线观看中文字幕不卡| 日韩精品一区在线| 亚洲麻豆国产自偷在线| 日本中文字幕一区| 99久久99久久精品国产片果冻| 欧美美女一区二区三区| 中文字幕久久午夜不卡| 亚洲福利视频导航| av在线综合网| 日韩欧美123| 午夜电影一区二区| 99精品视频在线观看| 精品日韩在线观看| 亚洲国产中文字幕| 99视频一区二区三区|