정말 천천히 진행되는 무언가에 내 머리를 긁적이며 다시 최적화 할 수 있기를 바랍니다.TensorFlow에서 채널별로 완전히 연결된 레이어를 적용하는 방법
그래서 TensorFlow에서 인코더와 디코더 사이에 큰 잠복 공간이있는 컨볼 루션 자동 인코더를 구현하려고합니다. 이제는 일반적으로 완전히 연결된 레이어가있는 디코더에 인코더를 연결하지만 잠재적 인 공간은 높은 차원을 가지므로 계산하기에 너무 많은 기능을 생성하게됩니다.
this paper에서이 문제에 대한 멋진 해결책을 발견했습니다. 그들은 그것을 '채널과 완전히 연결된 층'이라고 부릅니다. 기본적으로 채널 당 완전히 연결된 레이어입니다.
나는 이것을 구현하려고하고 실제로 작동 시키지만, 그래프의 생성에는 오랜 시간이 걸린다. 지금까지 내 코드입니다 :
def _network(self, dataset, isTraining):
encoded = self._encoder(dataset, isTraining)
with tf.variable_scope("fully_connected_channel_wise"):
shape = encoded.get_shape().as_list()
print(shape)
channel_wise = tf.TensorArray(dtype=tf.float32, size=(shape[-1]))
for i in range(shape[-1]): # last index in shape should be the output channels of the last conv
channel_wise = channel_wise.write(i, self._linearLayer(encoded[:,:,i], shape[1], shape[1]*4,
name='Channel-wise' + str(i), isTraining=isTraining))
channel_wise = channel_wise.concat()
reshape = tf.reshape(channel_wise, [shape[0], shape[1]*4, shape[-1]])
reconstructed = self._decoder(reshape, isTraining)
return reconstructed
그래서 왜 이렇게 오래 걸리나요? 실제로는 범위 (2048)이지만 모든 선형 레이어는 실제로 작습니다 (4x16). 나는 이것을 잘못된 방향으로 접근하고 있는가?
감사합니다.
이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [검토 중] (리뷰/저품절 게시물/18677744) – aerokite
@aerokite 고마워, 이미 내 대답을 수정했습니다. – Haibo
와우! 감사! 나는 그들이 온라인 구현을 가지고 있으며 텍스트에서도 언급하지 않는다고 믿을 수 없다! 또한 이것은 내가하고있는 것과는 아주 거리가 멀다. 나는 그들이 나처럼 똑같은 문제가 있는지 궁금하다. –