原始GAN
训练过程:
- 初始化generator和discriminator
- 在每一轮迭代中:
- 首先固定生成器 $G$,然后更新判别器$D$;这时候,$D$学会对真实目标打高分,生成目标打低分;
- 固定判别器$D$,然后更新生成器$G$;这时候,生成器(通过梯度上升)学习如何欺骗判别器;
训练过程公式版:
让希望永驻
vector | 尾部之外的位置插入或删除元素可能很慢 |
---|---|
deque | 头尾位置插入、删除速度很快 |
list | 任何位置插入、删除速度很快 |
forward_list | 只支持单向顺序访问,任何位置插入、删除都很快。 |
array | 固定大小数组。不能添加删除元素 |
string | 随机访问快、尾部插入删除很快。 |
预备点:
delctype
的使用:c++里的两个类型推理符号auto
和delctype
:
auto
:auto关键字指定正在声明的变量的类型将自动从其初始化器中推得。函数的返回类型是auto,那么将在运行时通过返回类型表达式对其进行计算1 | int main() |
引入this
调用一个成员函数,编译器用请求该函数的对象地址初始化this
,所以this
的目的总是指向这个对象,因此this
是一个常量指针。
引入const
成员函数
以下是Sales_data
类的一个成员函数的定义,参数列表之后的const
作用是修改隐式this
指针的类型,因为默认情况下,this
的类型是指向类类型非常量版本的常量指针。所以默认情况不能把this
绑定到一个常量对象上。这样使用const
的成员函数被称为常量成员函数。
1 | std::string isbn() const {return bookNo;} |
类作用域
编译器首先编译成员的声明,然后是成员函数体,所以成员函数体可以随意使用类中的其他成员无须在意成员的顺序。
定义一个返回this
对象的函数
函数类似于某个内置运算符时,应该令该函数的行为尽量模仿这个运算符。内置赋值运算符把它的左侧运算对当左值返回,意味着这些函数返回的是对象本身而非对象的副本,因此combine必须返回引用类型。
1 | Sales_data& Sales_data::combine(const Sales_data &rhs) |