我一直在尝试实现这里描述的算法,然后在同一篇论文中描述的"大动作任务"上测试它.
算法概述:
简而言之,该算法使用下面所示形式的RBM通过改变其权重来解决强化学习问题,使得网络配置的自由能等于为该状态动作对给出的奖励信号.
为了选择动作,算法在保持状态变量固定的同时执行gibbs采样.有足够的时间,这会产生具有最低自由能的动作,因此是给定状态的最高奖励.
大型行动任务概述:
作者的实施指南概述:
具有13个隐藏变量的受限Boltzmann机器在具有12位状态空间和40位动作空间的大动作任务的实例化上被训练.随机选择了13个关键状态.该网络运行了12000次,学习率从0.1到0.01,在整个培训过程中,温度从1.0到0.1呈指数级增长.每个迭代都以随机状态初始化.每个动作选择包括100次Gibbs采样迭代.
重要的遗漏细节:
我的实施:
我最初假设作者没有使用指南中描述的机制,所以我尝试在没有偏置单元的情况下训练网络.这导致了近乎机会的表现,这是我的第一个线索,即使用的某些机制必须被作者视为"显而易见",因此被省略.
我玩了上面提到的各种省略机制,并通过使用以下方式获得了我最好的结果:
但即使进行了所有这些修改,我在任务上的表现通常在12000次迭代后的平均奖励为28.
每次迭代的代码:
%%%%%%%%% START POSITIVE PHASE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data = [batchdata(:,:,(batch)) rand(1,numactiondims)>.5];
poshidprobs = softmax(data*vishid + hidbiases);
%%%%%%%%% END OF POSITIVE PHASE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hidstates = softmax_sample(poshidprobs);
%%%%%%%%% START ACTION SELECTION PHASE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if test
[negaction poshidprobs] = choose_factored_action(data(1:numdims),hidstates,vishid,hidbiases,visbiases,cdsteps,0);
else
[negaction poshidprobs] = choose_factored_action(data(1:numdims),hidstates,vishid,hidbiases,visbiases,cdsteps,temp);
end
data(numdims+1:end) = negaction > rand(numcases,numactiondims);
if mod(batch,100) == 1
disp(poshidprobs);
disp(min(~xor(repmat(correct_action(:,(batch)),1,size(key_actions,2)), key_actions(:,:))));
end
posprods …
Run Code Online (Sandbox Code Playgroud) matlab artificial-intelligence machine-learning bayesian-networks reinforcement-learning
我有一个UITextView,它可以在需要时放大以适应contentView.但是,当我粘贴一段文本时,它会将内容的起点和终点垂直放在错误的位置.输入或删除字符会将其重置回正确的位置.
任何想法为什么会这样?
-(void)textViewDidChange:(UITextView *)textView {
self.textView.frame = CGRectMake(
self.textView.frame.origin.x,
self.textView.frame.origin.y,
self.textView.frame.size.width,
self.textView.contentSize.height + HEADER_ADDITIONAL_HEIGHT);
self.textView.contentOffset = CGPointMake(0, 0);
self.previousContentSize = textView.contentSize;
}
Run Code Online (Sandbox Code Playgroud) CVM上的Clojure与CLR的性能比较是否存在?或者也许那些同时使用性能敏感代码的人可以给出一些轶事评论?
哪些AJAX库与Spring MVC配合得很好?
我是Spring和Spring MVC的新手.从http://www.springsource.org上的文档我还不了解Spring MVC内置的AJAX框架,或者建议使用哪些第三方API和工具,以及开发Spring MVC应用程序.
所有建议都表示赞赏.
我确实搜索了之前关于这个主题的SO讨论,但我没有得到任何明确的指示.
所以我正在尝试解决我在设计PHP类时遇到的问题.我已经创建了一个基类,并分配了私有变量.我有扩展这个基类的子类,它通过基类的函数对这些私有变量进行引用和更改.下面是一个例子,记住我仍然感到困惑之间的区别private
和protected
方法/变量(让我知道如果我做错了!):
base.class.php
<?php
class Base {
private $test;
public function __construct(){
require('sub.class.php');
$sub = new Sub;
echo($this->getTest());
}
public function getTest(){
return $this->test;
}
protected function setTest($value){
$this->test = $value;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
sub.class.php
<?php
class Sub extends Base {
public function __construct(){
parent::setTest('hello!');
}
}
?>
Run Code Online (Sandbox Code Playgroud)
所以我希望将结果hello!
打印在屏幕上 - 而不是什么都没有.我可能会对课程产生根本性的误解,或者我可能只是做错了什么.非常感谢任何指导!谢谢.
编辑:
感谢所有提供答案的人 - 我认为,尽管有很好的解决方案,但是这些子类实际上并不是我需要的 - 似乎委托类在这一点上可能更有用,因为我真的不需要引用Base其他类中的函数.
我需要为索引数据提供一些唯一且一致的ID,我尝试使用NSManagedObject的objectID,但看起来对于同一个实体,它的objectID不断变化,是否有人知道这是不一致的?
有谁知道检查对象是否是猫鼬对象的最简单方法是什么?我只是最好检查是否定义了toObject()或是否有更有效的方法.非常感谢
我正试图处理面料上的失败,但我在文档上看到的例子太过本地化,不符合我的口味.如果许多操作中的任何一个失败,我需要执行回滚操作.然后,我尝试使用上下文来处理它,如下所示:
@_contextmanager
def failwrapper():
with settings(warn_only=True):
result = yield
if result.failed:
rollback()
abort("********* Failed to execute deploy! *********")
Run Code Online (Sandbox Code Playgroud)
然后
@task
def deploy():
with failwrapper():
updateCode()
migrateDb()
restartServer()
Run Code Online (Sandbox Code Playgroud)
不幸的是,当其中一个任务失败时,我什么都搞定了result
.
有没有办法实现这个?或者还有另一种处理这种情况的方法吗?
如何在MySQL查询中使用正则表达式单词边界?
例如,我要匹配“产品”或“新闻稿”,
它工作正常OR
,
IF(? = 'product' OR ? = 'newsletter', ... , ...)
Run Code Online (Sandbox Code Playgroud)
但是正则表达式呢?我认为下面会是这样?
IF(? REGEXP '^('product'||'newsletter')+$', ..., ... )
Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 2008 R2 中有 3 个表,如下所示:
一个公司可能有许多 LSP。一个 LSP 可能有许多 SERVICE。
而且我需要确保 SERVICE_CODE 唯一标识公司内的服务记录。换句话说,COMPANY_ID + SERVICE_CODE 应该在整个系统中唯一标识一条SERVICE 记录。
例如:COMPANY-A 可能没有具有相同 SERVICE_CODE 的 2 个服务(具有 2 个不同的 SERVICE_ID)。但是 COMPANY-A 和 COMPANY-B 可能都有 2 个独立的 SERVICES(同样,具有不同的 SERVICE_ID),SERVICE_CODE = "PREMIUM"。
我需要这样的东西:
alter table "SERVICE"
add constraint "SERVICE_Index01"
unique ("COMPANY_ID", "SERVICE_CODE")
Run Code Online (Sandbox Code Playgroud)
但是(显然)这会失败,因为 COMPANY_ID 列不在 SERVICE 表中。
在此先感谢您的帮助。
sql ×2
ajax ×1
class ×1
clojure ×1
clojureclr ×1
core-data ×1
deployment ×1
fabric ×1
ios ×1
iphone ×1
java ×1
matlab ×1
mongoose ×1
mysql ×1
objective-c ×1
oop ×1
php ×1
private ×1
protected ×1
python ×1
regex ×1
spring ×1
spring-mvc ×1
sql-server ×1
uitextview ×1