tensorflow画像の接合
tensorflowは、画像を複数のブロックの行列接合tfを行う.concat(), tf.stack() 深さ学習の過程において、ボリューム化によって得られる画像ブロックサイズは8である.×8×1024の画像ブロックは、得られた画像ブロックに対してreshapeを行って得られる[8].×8]×[32×32,そのうち[8]×8は画像ブロックの個数であり、[32]×32]は、小さな画像のサイズです.tfを通過する.concatは、小さなブロックの画像をつなぎ合わせます.-画像のボリュームを作る過程で、このような面倒なつなぎ合わせをしましたが、ブロックつなぎ合わせなので、最初はreshapeを使いましたが、結果が間違っていて、データの次元を明確にする必要があり、データの次元に問題があります.
最後に、行接合と列接合により得られた画像サイズは256である.×256×1サイズの画像.[batch_size,height,weight,channel]の画像を1のようにブロック接合する:深さニューラルネットワークでbatch_size個画像サイズ[256]×256×1の画像はブロックの接合を行い、1次元以上の画像に対して接合され、[batch_size,8,8,1024]から[batch_size,256,256,1]に接合される.部分的にやっている間にbatch_sizeのこの部分は本当にどのように処理するか分からないので、やはり本方法を使って、使う関数はappendとtfです.stack()
学習中にtensorに直接値を付けることはできません.例えば、x 2=tfと書くことはできません.reshape(m 2,[256,256,1])x 3[k,:,:,:,1]=x 2のようなコードでは、エラーが発生します:'Tensor'object does not support item assignment類似インデックス付き付与については、参照の方法は、x 3=[x 3]です.append(x 2)はこのときlistのフォーマットが得られるので、次にlistをarrayに変換し、tfを用いる.stack(x3)
import tensorflow as tf
def tensor_concat(f, axis):
x1 = f[0, :, :]
for i in range(1, 8):
x1 = tf.concat([x1, f[i, :, :]], axis=axis)
return x1
def block_to_image(f):
x1 = tf.reshape(f, [64, 1024])
x1 = tf.reshape(x1, [64, 32, 32])
m2 = tensor_concat(x1[0:8, :, :], axis=1)
for i in range(1, 8):
m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
m2 = tf.concat([m2, m1], axis=0)
x2 = tf.reshape(m2, [256, 256, 1])
return x2
x = tf.random_normal([ 8, 8, 1024])
with tf.Session() as sess:
m = sess.run(x)
m1 = sess.run(block_to_image(m))
最後に、行接合と列接合により得られた画像サイズは256である.×256×1サイズの画像.
def tensor_concat(f, axis):
x1 = f[0, :, :]
for i in range(1, 8):
x1 = tf.concat([x1, f[i, :, :]], axis=axis)
return x1
def block_to_image(f):
x3 =[]
for k in range(f.shape[0]):
x = f[k, :, :, :]
x1 = tf.reshape(x, [64, 1024])
x1 = tf.reshape(x1, [64, 32, 32])
m2 = tensor_concat(x1[0:8, :, :], axis=1)
for i in range(1, 8):
m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
m2 = tf.concat([m2, m1], axis=0)
x2 = tf.reshape(m2, [256, 256, 1])
x3.append(x2)
x4 = tf.stack(x3)
return x4
x = tf.random_normal([10, 8, 8, 1024])
with tf.Session() as sess:
m = sess.run(x)
m1 = sess.run(block_to_image1(m))
学習中にtensorに直接値を付けることはできません.例えば、x 2=tfと書くことはできません.reshape(m 2,[256,256,1])x 3[k,:,:,:,1]=x 2のようなコードでは、エラーが発生します:'Tensor'object does not support item assignment類似インデックス付き付与については、参照の方法は、x 3=[x 3]です.append(x 2)はこのときlistのフォーマットが得られるので、次にlistをarrayに変換し、tfを用いる.stack(x3)