我试图直接读取图像为黑色和白色.
我最近将我的OpenCv版本更新为3.0.0-dev,我之前使用的代码不再起作用.
img = cv2.imread(f, cv2.CV_LOAD_IMAGE_GRAYSCALE)
Run Code Online (Sandbox Code Playgroud)
适用于2.4,但不适用于新版本,因为没有字段CV_LOAD_IMAGE_GRAYSCALE.
有什么建议?
注意:我知道这cv2.imread(f,0)会有效,但我不喜欢在我的代码中使用未命名的常量.谢谢!
我想知道python中是否有内置函数用于等效的Haskell scanl,reduce相当于foldl.
这样做的东西:
Prelude> scanl (+) 0 [1 ..10]
[0,1,3,6,10,15,21,28,36,45,55]
Run Code Online (Sandbox Code Playgroud)
问题不在于如何实现它,我已经有2个实现,如下所示(但是,如果你有一个更优雅的实现,请随时在这里显示).
首次实施:
# Inefficient, uses reduce multiple times
def scanl(f, base, l):
ls = [l[0:i] for i in range(1, len(l) + 1)]
return [base] + [reduce(f, x, base) for x in ls]
print scanl(operator.add, 0, range(1, 11))
Run Code Online (Sandbox Code Playgroud)
得到:
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55]
Run Code Online (Sandbox Code Playgroud)
第二次实施:
# Efficient, using an accumulator
def scanl2(f, base, l):
res = [base]
acc = base …Run Code Online (Sandbox Code Playgroud) 我想采用给定均值和标准差的正态分布进行采样.我知道如何在各种上下文中执行此操作,如Data.Random.Rvar或Data.Random.MonadRandom.但是,我的函数的上下文是Control.Monad.MonadRandom,我想保持这种方式,因为我的整个项目使用Control.Monad.MonadRandom.
有没有办法这样做,你能帮我这么做吗?
这是代码的样子.Pattern只是Data.Vector的别名Double和Weights是Data.Vector(Data.Vector Double)的别名(即矩阵)
train :: MonadRandom m => [Pattern] -> Int -> m Weights
train pats nr_hidden = do
ws_start <- ws_start''
foldM updateWS ws_start pats
where ws_start' = take p (repeat $ take nr_hidden $ repeat $ (normal 0.0 0.01))
ws_start'' = vector2D <$> (sequence $ map sequence ws_start')
p = length pats
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个简单的问题,我预计已经在网上找到了一个简单的答案,但我没有.
由于矩阵操作,我有一个与numpy一起工作的python项目.我想加快代码速度,所以我做了一些分析,找到适合工作的正确工具.结果是开销不是python,而是矩阵运算.因此我认为我应该使用Theano(特别是考虑到我正在实现机器学习算法,这就是为此而做的).
我的项目的大部分开销都在一个函数中,我想知道在某种程度上可以用theano重写该函数然后从中获取numpy数组并像往常一样继续计算.
这再次只是为了测试我将在不承诺改变大量代码的情况下获得多少速度.
谢谢!
编辑:以下是这个功能
def backprop(weights, layerValues, finalLayerErrors, activationFunctions):
nrLayers = len(weights) + 1
deDw = []
deDbias = []
upperLayerErrors = finalLayerErrors
for layer in xrange(nrLayers - 1, 0, -1):
deDz = activationFunctions[layer - 1].derivativeForLinearSum(
upperLayerErrors, layerValues[layer])
upperLayerErrors = np.dot(deDz, weights[layer - 1].T)
dw = np.einsum('ij,ik->jk', layerValues[layer - 1], deDz)
dbias = deDz.sum(axis=0)
# Iterating in decreasing order of layers, so we are required to
# append the weight derivatives at the front as we go along …Run Code Online (Sandbox Code Playgroud)