小编SaB*_*SaB的帖子

矩阵没有对齐错误:Python SciPy fmin_bfgs

问题提示: 当尝试使用scipy.optimize.fmin_bfgs最小化(优化)函数时,该函数抛出一个

derphi0 = np.dot(gfk,pk)ValueError:矩阵未对齐

错误.根据我的错误检查,这发生在第一次迭代的最后通过fmin_bfgs - 就在返回任何值或任何调用回调之前.

配置: Windows Vista Python 3.2.2 SciPy 0.10 IDE =带有PyDev的Eclipse

详细说明: 我使用scipy.optimize.fmin_bfgs来最小化简单逻辑回归实现的成本(从Octave转换为Python/SciPy).基本上,成本函数名为cost_arr函数,梯度下降在gradient_descent_arr函数中.

我已手动测试并完全验证*cost_arr*和*gradient_descent_arr*正常工作并正确返回所有值.我还测试了验证正确的参数是否传递给*fmin_bfgs*函数.然而,运行时,我得到ValueError:矩阵没有对齐.根据来源评论,确切的错误发生在

def line_search_wolfe1函数在#Minpack的Wolfe行和scaplar搜索中由scipy包提供.

值得注意的是,如果我使用scipy.optimize.fmin,则fmin函数将运行完成.

确切错误:

文件"D:\ Users\Shannon\Programming\Eclipse\workspace\SBML\sbml\LogisticRegression.py",第395行,在fminunc_opt中

optcost = scipy.optimize.fmin_bfgs(self.cost_arr, initialtheta, fprime=self.gradient_descent_arr, args=myargs, maxiter=maxnumit, callback=self.callback_fmin_bfgs, retall=True)   
Run Code Online (Sandbox Code Playgroud)

文件"C:\ Python32x32\lib\site-packages\scipy\optimize\optimize.py",第533行,在fmin_bfgs old_fval,old_old_fval)
文件"C:\ Python32x32\lib\site-packages\scipy\optimize\linesearch. py",第76行,in line_search_wolfe1 derphi0 = np.dot(gfk,pk)ValueError:矩阵未对齐

我用以下方法调用优化函数:optcost = scipy.optimize.fmin_bfgs(self.cost_arr,initialtheta,fprime = self.gradient_descent_arr,args = myargs,maxiter = maxnumit,callback = self.callback_fmin_bfgs,retall = True)

我花了几天时间试图解决这个问题,似乎无法确定是什么导致 矩阵没有对齐错误.

附录:2012-01-08我更多地使用了这个并且似乎已经缩小了问题(但是对于如何修复它们感到困惑).首先,fmin(仅使用fmin)使用这些函数 - 成本,渐变.其次,在手动实现中的单次迭代中测试时,成本和梯度函数都能准确地返回预期值(不使用fmin_bfgs).第三,我在optimize.linsearch中添加了错误代码,错误似乎是在def line_search_wolfe1行中引发的:derphi0 = np.dot(gfk,pk).在这里,根据我的测试,scipy.optimize.optimize pk = [[12.00921659] [11.26284221]] pk type = and …

linear-algebra scipy linear-regression python-3.x

15
推荐指数
1
解决办法
8292
查看次数

你能在虚拟机中编程/测试CUDA吗?

我问这是一个编程和环境问题.您可以在访问物理GPU卡的虚拟机中测试/编程CUDA吗?

我正在购买一个新的(非常好的系统),部分地尝试基本的CUDA编程.处理器将是Intel i7-4770,支持VT-d(直接IO直通)或i7-4770K,但不支持VT-d.VT-d支持是否允许从VM访问GPU卡?(我看过英特尔,主板制造网站和虚拟机上的文档,但没有看到这个问题的答案.)

我打算在带有虚拟机(可能通过QEMU/KVM)的新开发盒上运行Linux作为我的基本操作系统,以测试其他环境(如Windows和Mac OS)中的软件.换句话说,我会在Linux机器上进行主要开发,然后需要在同一个盒子上运行的虚拟机上进行测试.

但是,VM OS是否能够访问GPU卡进行测试/开发?

[2013年7月首问]

cuda gpu virtual-machine

5
推荐指数
1
解决办法
4230
查看次数

如何在初始数据库设置期间为不存在的表创建FOREIGN KEYS?

我有一个最初使用SQLite开发的小型数据库.我的桌面应用程序在用户最初启动应用程序时自动设置数据库表.

问题 有几个表有FOREIGN KEY约束.假设我有表A,表B和表C.A对C有一个FOREIGN KEY约束.但是当我进行初始表生成时,每次都会抛出SQLExceptions:

约束"SQL130319142644383"无效:引用的表PREDICTIONRUN不存在.

(注意:由于其他FOREIGN KEY问题,我不能简单地重新组织表.)

那么,如何使用FOREIGN KEY约束创建表?

if (! this.checkIfTableExists("DocumentClassification", conn)) {
                sql.setLength(0) ;
                sql.append("CREATE TABLE DocumentClassification (  " ) ;
                if (dbtype.equalsIgnoreCase("javadb")) {
                    sql.append("    classificationid INTEGER PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1) , " ) ; 

                } else {
                    sql.append("    classificationid INTEGER PRIMARY KEY, " ) ; 
                }
                sql.append("       classid INTEGER, " ) ;
                sql.append("       documentid INTEGER,  " ) ;
                sql.append("       predictionrunid INTEGER, " ) ;

                sql.append(" …
Run Code Online (Sandbox Code Playgroud)

sql

3
推荐指数
1
解决办法
3657
查看次数

你如何阅读Lucene的索引进行搜索?

Lucene 4.3新手

如何在Lucene 4.3中进行简单的搜索?

我在一个简单的Java测试用例中修改了大纲:http: //lucene.apache.org/core/4_3_0/core/overview-summary.html#overview_description

该示例以:

DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
Run Code Online (Sandbox Code Playgroud)

但根据文档,DirectoryReader不可见(受保护).所以看起来好像你不能使用DirectoryReader.

所以我做了挖掘并尝试了各种排列以避免直接使用DirectoryReader,包括:

File indexdir = new File("D:\\lucenetest\\") ; // location of my index
Directory directory = FSDirectory.open(indexdir);

IndexReader ireader = IndexReader.open(FSDirectory.open(indexdir)); //ERROR NoSuchMethodError
//IndexReader ireader = IndexReader.open(directory); //variation ERROR NoSuchMethodError
IndexSearcher isearcher = new IndexSearcher(ireader);
Run Code Online (Sandbox Code Playgroud)

等等(包括尝试原子阅读器).似乎没什么用.(我确认Lucene Core已正确导入.)索引工作正常.

我查看了Lucene示例搜索代码以获取更多线索.http://lucene.apache.org/core/4_2_1/demo/src-html/org/apache/lucene/demo/SearchFiles.html

IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(index))); //DirectoryReader not visible error
    IndexSearcher searcher = new IndexSearcher(reader);
Run Code Online (Sandbox Code Playgroud)

在简单的示例文件中使用时,这也不起作用.

我已经能够使简单的索引工作,以前能够使Lucene演示工作(索引和搜索).但是,我似乎无法进行简单的搜索工作.

有线索吗?

java lucene

3
推荐指数
2
解决办法
2万
查看次数

从Linux迁移到Windows后如何重新配置​​Eclipse?

问题:
我将Eclipse项目从Linux机器移动到Windows 8.1机器,但无法在新的Windows Box上加载Git存储库.我在Eclipse中使用eGit(并不是GIT的复杂用户).

我通过手动复制整个项目目录和所有子目录,将项目从Linux框移动到Windows框.我的Git/eGit文件似乎存储在,例如, D:\TheUser\Programming\eclipse\project1\project1gui\.git.

当我在Windows框中启动Eclipse时,我收到了一个eGit错误,并且没有打开任何存储库.错误是:

java.nio.file.InvalidPathException:索引66处的非法char <:>:\ home\TheUser\Programming\eclipse\project1\project1gui.git:\ home\TheUser\Programming\eclipse\project2.git:\ objects

注意:错误中的路径似乎是旧的Ubuntu/Linux路径.

我理解错误,路径中有一个Windows无效字符,但我根本无法找到配置文件或其他手动重新配置eGit(我不想丢失我的存储库).

规格:
Eclipse Kelper SR2
JDK 1.7
Windows 8.1 x64 Pro
(从Ubuntu x64移动)

eclipse git

2
推荐指数
1
解决办法
933
查看次数