2016-04-19 12 views
6

मैं टेंसरफ्लो में एक साधारण बिलीनेर आकार (जरूरी नहीं कि एक पूर्णांक कारक द्वारा) करना चाहता हूं। उदाहरण के लिए, एक (32,3,64,64) टेंसर से शुरू करना, मुझे एक (32,3,96, 9 6) टेंसर चाहिए, जहां प्रत्येक 64x64 को बिलीनेर इंटरपोलेशन का उपयोग करके 1.5 के कारक द्वारा बचाया गया है। उसे करने का सबसे अच्छा तरीका कौन सा है?बिलिनार टेंस्फोर्लो में उछाल?

मैं इसे मनमाने कारकों का समर्थन करना चाहता हूं> 1, केवल 1.5 विशेष रूप से नहीं।

नोट: प्रत्येक 64x64 पर ऑपरेशन skimage.transform.rescale (scale=1.5, order=1) करता है जैसा ही होगा।

उत्तर

12

tf.image.resize_images आपको जो चाहिए वह करना चाहिए। यह मनमाने ढंग से गहराई (चैनलों की संख्या) के साथ, 3 डी (एकल छवि) और 4 डी (छवियों का बैच) टेंसर दोनों स्वीकार करता है। इसलिए यह उम्मीद करनी चाहिए:

# it's height, width in TF - not width, height 
new_height = int(round(old_height * scale)) 
new_width = int(round(old_width * scale)) 
resized = tf.image.resize_images(input_tensor, [new_height, new_width]) 

बिलीनेर इंटरपोलेशन डिफ़ॉल्ट है इसलिए आपको इसे निर्दिष्ट करने की आवश्यकता नहीं है। आप सीधे resize_bilinear का उपयोग भी कर सकते हैं।

+1

धन्यवाद, यही वही है जो मैं ढूंढ रहा था। मुझे आश्चर्य है, क्या resize_images के माध्यम से backpropagate करना संभव है? –

+0

@AlexI ऐसा करना संभव है? आकार बदलने के माध्यम से बैकप्रोपोगेट? – mattdns

+0

@mattdns हां, बिल्कुल। आप आकार बदलने के माध्यम से बैकप्रॉप कर सकते हैं क्योंकि यह एक रैखिक ऑपरेटर है। Tensorflow यह कोई समस्या के साथ करता है। – RawMean

संबंधित मुद्दे