我有一个多次调用的Theano函数,每次都有不同的共享变量.现在实现它的方式,每次运行时都会重新定义Theano函数.我假设,这会使整个程序变慢,因为每次定义Theano函数时,图形都会重建.
def sumprod_shared(T_shared_array1, T_shared_array2):
f = theano.function([], (T_shared_array1 * T_shared_array2).sum(axis=0))
return f()
for factor in range(10):
m1 = theano.shared(factor * array([[1, 2, 4], [5, 6, 7]]))
m2 = theano.shared(factor * array([[1, 2, 4], [5, 6, 7]]))
print sumprod_shared(m1, m2)
Run Code Online (Sandbox Code Playgroud)
对于非共享(正常)变量,我可以定义一次函数,然后使用不同的变量调用它而不重新定义.
def sumprod_init():
T_matrix1 = T.lmatrix('T_matrix1')
T_matrix2 = T.lmatrix('T_matrix2')
return theano.function([T_matrix1, T_matrix2], (T_matrix1 * T_matrix2).sum(axis=0))
sumprod = sumprod_init()
for factor in range(10):
np_array1 = factor * array([[1, 2, 4], [5, 6, 7]])
np_array2 = factor * array([[1, 2, 4], [5, 6, …
Run Code Online (Sandbox Code Playgroud) 我已经生成了一个类似的情节
figure; hold;
axis([0 10 0 10]);
fill([ 1 1 5 5], [5 1 1 5],'b')
Run Code Online (Sandbox Code Playgroud)
现在我想将这个情节作为一个矩阵,以便我可以用高斯过滤博客.谷歌我发现这个线程在MATLAB Central上用Rasterizing Plot to Image.我试过了,但我只能让它适用于线条或功能图.
你有什么想法?
我希望这是微不足道的,我只是没有在教程中找到它.我正在编写'监督'c代码的python代码,也就是我用python中的ctypes运行c代码.现在我想"捕获"c'printfs'来处理c代码输出的数据.知道怎么会这样做吗?
谢谢
我使用ctypes来访问python中读取C函数的文件.由于读取的数据量巨大且未知,因此我**float
在C中使用.
int read_file(const char *file,int *n_,int *m_,float **data_) {...}
函数mallocs
是一个称为data
适当大小的二维数组,在这里n
和m
,并将值复制到引用的值.请参阅以下代码段:
*data_ = data;
*n_ = n;
*m_ = m;
Run Code Online (Sandbox Code Playgroud)
我使用以下python代码访问此函数:
p_data=POINTER(c_float)
n=c_int(0)
m=c_int(0)
filename='datasets/usps'
read_file(filename,byref(n),byref(m),byref(p_data))
Run Code Online (Sandbox Code Playgroud)
之后我尝试p_data
使用contents
,但我只获得一个浮点值.
p_data.contents
c_float(-1.0)
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何data
在python中访问?
你推荐什么?如果我遗漏了一些不清楚的地方,请不要犹豫!
我对Nvidia的OpenCl/Cuda框架有疑问,但我认为这是一个gcc
链接问题.
的opencl_hello_world.c
示例文件使用下面的头文件:
#include "../OpenCL/common/inc/CL/opencl.h"
Run Code Online (Sandbox Code Playgroud)
与opencl.h
使用这些头文件:
#include <../OpenCL/common/inc/CL/cl.h>
#include <../OpenCL/common/inc/CL/cl_gl.h>
#include <../OpenCL/common/inc/CL/cl_gl_ext.h>
#include <../OpenCL/common/inc/CL/cl_ext.h>
Run Code Online (Sandbox Code Playgroud)
所以所有头文件都在同一个文件夹中.
当我编译时,gcc opencl_hello_world.c -std=c99 -lOpenCL
我得到以下错误消息:
error: ../OpenCL/common/inc/CL/cl.h: No such file or directory
error: ../OpenCL/common/inc/CL/cl_gl.h: No such file or directory
...
Run Code Online (Sandbox Code Playgroud)
即使cl.h
和其他头文件位于此文件夹中.
搜索了SO后,我改变了opencl.h
to中 的包含
#include "cl.h"
#include "cl_gl.h"
Run Code Online (Sandbox Code Playgroud)
我在这里读到:gcc无法找到包含的标题.
但是搞乱框架头文件似乎不怎么样?处理这个问题的正确方法是什么?
在任何地方都没有提到的东西(至少我可以看到)是库函数暴露给内联CUDA内核的东西.
具体来说,我正在进行小/愚蠢的矩阵乘法,这些乘法不值得单独卸载到GPU,而是卸载包含此乘法的算法的更大部分.没有人喜欢使用他们自己的linalg功能,因为有人总是做得更好.
TLDR在PyCUDA下的内联内核中我可以使用哪些库?
我有类似的东西
m = array([[1, 2],
[4, 5],
[7, 8],
[6, 2]])
Run Code Online (Sandbox Code Playgroud)
和
select = array([0,1,0,0])
Run Code Online (Sandbox Code Playgroud)
我的目标是
result = array([1, 5, 7, 6])
Run Code Online (Sandbox Code Playgroud)
当我读到Simplfy行和列提取时,我尝试了_ix ,numpy,但这并没有导致我想要的结果.
ps如果您能想到更精确的问题,请更改此问题的标题.
我正在尝试在Python中读取h5文件。
可以在此链接中找到该文件,该文件称为“ vstoxx_data_31032014.h5”。我尝试运行的代码来自Yves Hilpisch撰写的《 Python for Finance》一书,内容如下:
import pandas as pd
h5 = pd.HDFStore('path.../vstoxx_data_31032014.h5', 'r')
futures_data = h5['futures_data'] # VSTOXX futures data
options_data = h5['options_data'] # VSTOXX call option data
h5.close()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
h5 = pd.HDFStore('path.../vstoxx_data_31032014.h5', 'r')
Traceback (most recent call last):
File "<ipython-input-692-dc4e79ec8f8b>", line 1, in <module>
h5 = pd.HDFStore('path.../vstoxx_data_31032014.h5', 'r')
File "C:\Users\Laura\Anaconda3\lib\site-packages\pandas\io\pytables.py", line 466, in __init__
self.open(mode=mode, **kwargs)
File "C:\Users\Laura\Anaconda3\lib\site-packages\pandas\io\pytables.py", line 637, in open
raise IOError(str(e))
OSError: HDF5 error back trace
File "C:\aroot\work\hdf5-1.8.15-patch1\src\H5F.c", line 604, in H5Fopen …
Run Code Online (Sandbox Code Playgroud) 我正在使用CUDA处理图像的项目.该项目只是图像的加法或减法.
我可以问你的专业意见,这是最好的,这两者的优点和缺点是什么?
我感谢大家的意见和/或建议,因为这个项目对我来说非常重要.