될 것입니다 :
In [1055]: A = np.array([[1,2,3],[4,5,6],[7,8,9]])
...: B = np.array([[1,1,1],[1,1,1],[1,1,1]])
...:
# define input tensor
In [1056]: tfA = tf.constant(A, dtype=tf.float32)
# reshape it to 4D tensor (as needed by tf.nn.conv2d)
In [1057]: tfA = tfA[tf.newaxis, :, :, tf.newaxis]
# define kernel tensor
In [1058]: tfK = tf.constant(B, dtype=tf.float32)
# again reshape it to 4D tensor (also, we use 2x2 convolution)
In [1059]: tfK = tfK[:-1, :-1, tf.newaxis, tf.newaxis]
# convolving the input tensor with kernel
In [1060]: convolved = tf.nn.conv2d(tfA, tfK, strides=[1, 1, 1, 1], padding="VALID")
In [1061]: convolved.eval()
Out[1061]:
array([[[[ 12.],
[ 16.]],
[[ 24.],
[ 28.]]]], dtype=float32)
나는이 텐서를 평가하기 위해 대화 형 세션 사용은하지만이 완벽하게 작동한다 계산 그래프를 정의한 다음 나중에 명시 적 세션을 사용하여 실행해도 괜찮습니다.
또한
이 명확하게 편집,이 방법은 (2x2)
커널 텐서 B
을 위해 작동합니다. 커널 텐서의 엔트리가 두 배가되는 다음 예제를 고려하십시오. 예상대로 위의 예에서 얻은 결과와 비교할 때 최종 결과도 두 배가됩니다.
또 다른 예 :
In [110]: A = np.array([[1,2,3],[4,5,6],[7,8,9]])
In [111]: B = np.array([[2,2,2],[2,2,2],[2,2,2]])
In [112]: tfA = tf.constant(A, dtype=tf.float32)
In [113]: tfA = tfA[tf.newaxis, :, :, tf.newaxis]
In [114]: tfK = tf.constant(B, dtype=tf.float32)
In [115]: tfK = tfK[:-1, :-1, tf.newaxis, tf.newaxis]
In [116]: convolved = tf.nn.conv2d(tfA, tfK, strides=[1, 1, 1, 1], padding="VALID")
In [117]: convolved.eval()
Out[117]:
array([[[[ 24.],
[ 32.]],
[[ 48.],
[ 56.]]]], dtype=float32)
내가 영업 이익은 tensorflow에 그것을 할 것으로 기대하고 생각합니다. 또한 출력이 거의없는 것처럼 보입니다. – kmario23
예, 2X2의 커널을 적용하지 않았으므로 예상대로 출력되지 않았습니다. –