2016-11-15 2 views
1

저는 두 세트의 이미지를 병렬로 처리하는 신경망을 구축 중입니다. 두 개의 열이 매개 변수를 공유하도록합니다. 이것이 제가하는 것입니다.tf.contrib.layers.convolution2d를 사용할 때 매개 변수를 공유합니다.

with tf.variable_scope(layer_name) as s: h1 = tf.contrib.layers.convolution2d(inputs = x1, num_outputs = 10, kernel_size = [3, 3], stride = [1, 1], padding = 'VALID', scope = s) h2 = tf.contrib.layers.convolution2d(inputs = x2, num_outputs = 10, kernel_size = [3, 3], stride = [1, 1], padding = 'VALID', reuse = True, scope = s)

이이 작업을 수행하는 올바른 방법이 있나요? tf.contrib.layers.convolution2d 클래스를 사용할 때 올바르게 수행하는 방법의 예제를 찾을 수 없습니다. 정확하지

답변

0

은과 같이 함수로합니다가 같은 무게를 재사용 할 것이다 다른 입력을 불렀다 지금

def function(x, reuse): 
    with tf.variable_scope(layer_name) as s: 
    output = tf.contrib.layers.convolution2d(inputs = x, num_outputs = 10, kernel_size = [3, 3], 
        stride = [1, 1], padding = 'VALID', reuse = reuse, scope = s) 
    return output 

output1 = function(image1, False) 
output2 = function(image2, True) 

합니다.

+0

스티븐 (Steven)에게 감사드립니다. 입력 내용이 다를 수 있습니다 (위의 내용을 수정). 그러나 코드를 실행하면 작동하지 않을 것이라고 생각합니다. 나는 변수가 이전에 생성 된 경우에만 '재사용'플래그를 True로 설정할 수 있다고 생각했습니다. 내가 잘못? – Deeplearningmaniac

+0

입력 내용이 다릅니다. image1은 image2와 다릅니다. 또한 진술이 정확하지 않습니다. contrib 레이어가 변수를 만듭니다. 동일한 계산 그래프에서 다시 호출 된 경우 재사용하기를 원할뿐입니다. – Steven

+0

귀하의 답변에 대해 이해할 수없는 부분이 있습니다. 만약 당신이 제안한 것과 같아야합니다. (wrapper 함수를 제외하고 글자 수 한도에 맞게 몇 가지 매개 변수를 삭제했습니다.) tf.variable_scope ("conv1")을 s : h1 = tf.contribh2 = tf.contrib.layers.convolution2d (입력 = x2, 재사용 = True, 범위 = s) h1에서 오류가 발생했습니다. (예 : 입력 = x1, 재사용 = True, 범위 = s) : ValueError : 변수 conv1/weights가 없거나 tf.get_variable()을 사용하여 생성되지 않았습니다. VarScope에서 reuse = None을 설정 하시겠습니까? 내가 뭘 잘못하고 있니? – Deeplearningmaniac

관련 문제