相关疑难解决方法(0)

使用Numpy stride_tricks获取非重叠的数组块

我正在尝试使用numpy.lib.stride_tricks.as_strided来迭代数组的非重叠块,但是我无法找到参数的文档,所以我只能得到重叠的块.

例如,我有一个4x5阵列,我希望得到4个2x2块.我很好,右边和底边的额外细胞被排除在外.

到目前为止,我的代码是:

import sys
import numpy as np

a = np.array([
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[16,17,18,19,20],
])

sz = a.itemsize
h,w = a.shape
bh,bw = 2,2

shape = (h/bh, w/bw, bh, bw)
strides = (w*sz, sz, w*sz, sz)
blocks = np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)

print blocks[0][0]
assert blocks[0][0].tolist() == [[1, 2], [6,7]]
print blocks[0][1]
assert blocks[0][1].tolist() == [[3,4], [8,9]]
print blocks[1][0]
assert blocks[1][0].tolist() == [[11, 12], [16, 17]]
Run Code Online (Sandbox Code Playgroud)

生成的块数组的形状似乎是正确的,但最后两个断言失败,可能是因为我的形状或步幅参数不正确.我应该设置哪些值来获得非重叠块?

python numpy

12
推荐指数
2
解决办法
8950
查看次数

Keras Conv2d 自己的过滤器

可以使用自己的过滤器而不是 Conv2D 中的过滤器数量设置参数过滤器数组

filters = [[[1,0,0],[1,0,0],[1,0,0]],
     [[1,0,0],[0,1,0],[0,0,1]],
     [[0,1,0],[0,1,0],[0,1,0]],
     [[0,0,1],[0,0,1],[0,0,1]]]
model = Sequential()
model.add(Conv2D(filters, (3, 3), activation='relu', input_shape=(3, 1024, 1024), data_format='channels_first'))
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

5
推荐指数
2
解决办法
5188
查看次数

tf.nn.conv2D 中的通道是什么?

我已经查看了一些关于 tf.nn.conv2D 的不同参数代表什么的很好的解释,但我仍然无法理解 in_channels 和 out_channels 到底代表什么。

有人可以帮我澄清一下吗?

python conv-neural-network tensorflow

4
推荐指数
1
解决办法
6601
查看次数

标签 统计

python ×3

tensorflow ×2

conv-neural-network ×1

keras ×1

numpy ×1