2017-02-20 4 views
2

私は入力イメージに対して前処理を実行する関数get_image(...)を持っています。私はそれを養うことができることなど、今、私は最初の次元は、バッチサイズ寸法であることを1つのテンソルにこのリストを変換したいTensorflow:イメージテンソルのリストからバッチを作成する

batch = [get_image(file_path) for file_path in batch_files] 

:私はこのようなリストで同じバッチに属しているすべての画像を収集します私のネットワークの入力プレースホルダに転送します。

_ = self.sess.run([loss],feed_dict={ input_placeholder: batch }) 

どのように私はそれを行うことができますか?私はすべてのテンソルを連結しようとすると

  batch_concat = tf.placeholder(shape=[None] + self.image_shape, dtype=tf.float32) 
      for i in xrange(0,self.batch_size): 
       if i == 0: 
        tmp_batch = tf.expand_dims(batch[i], 0) 
        batch_concat = tmp_batch 
       else: 
        tmp_batch = tf.expand_dims(batch[i], 0)       
        batch_concat = tf.concat(0, [batch_concat, tmp_batch]) 

、私は次のエラーを取得する:

TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays. 

だから多分それをネットワークに供給する前に戻ってnumpyの配列にテンソルを変換するのに十分だろうか?

+0

に置き換えられました。なぜあなたはinput_batchとして画像を含むpythonリストを渡さないのですか?テンソルフローはそれをあなたのために変換します – fabrizioM

+0

私はtfによって提供される前処理関数を使いたいと思っていました。それ以外の場合は、私はすべてのPythonで書き直す必要があります... – mcExchange

答えて

0

tf.packを使用すると、テンソルのリストをバッチにパックできます。

また、tf.concatを使用して、リストを最初のディメンションに沿って連結し、それを再形成することもできます。 TFのR1.1パックで

関連する問題