我正在学习 Rust 宏,并且在使用vec. 实现的源代码vec!:
macro_rules! vec {
($elem:expr; $n:expr) => (
$crate::vec::from_elem($elem, $n)
);
($($x:expr),*) => (
<[_]>::into_vec(box [$($x),*])
);
($($x:expr,)*) => (vec![$($x),*])
}
Run Code Online (Sandbox Code Playgroud)
让我们忘记使用它的标准方法:
let v0 = vec![1, 2, 3];
Run Code Online (Sandbox Code Playgroud)
如果我们查看源代码,我们不应该像下面那样使用它吗?
let v1 = vec!(3; 1);
let v2 = vec!(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
为什么我们使用[]而不是()inv1并v2与 进行比较v0?
我能找到的大多数材料(例如,David Silver 的在线课程)都提供了有关监督学习和强化学习之间关系的讨论。然而,它实际上是监督学习和在线强化学习之间的比较,在在线强化学习中,代理在环境中运行(或模拟交互),以在有关底层动态的有限知识的情况下获得反馈。
我对离线(批量)强化学习更好奇,其中数据集(收集的学习经验)是先验的。那么与监督学习相比有什么区别呢?他们有哪些相似之处?