1

Python でテンソルフローを使用するソフトマックス回帰プログラムの場合、1000 個の jpeg 画像ファイルを [画像インデックス、ピクセル インデックス] の 2D テンソル x として取得したいと考えています。「画像インデックス」は画像であり、ピクセルインデックスはその画像の特定の画像ピクセルです。モデル方程式は次のとおりです。

y = tf.nn.softmax(tf.matmul(x, W) + b)
where:
x = tf.placeholder(tf.float32, [None, image_size])
W = tf.Variable(tf.zeros([image_size, classes]))
b = tf.Variable(tf.zeros([classes]))

画像サイズ = 画像の高さ*幅 (すべての画像で一定)。

テンソルフローで画像ファイルをその形式で取得する最良の方法は何ですか?

4

2 に答える 2

1

画像処理を行うときは、OpenCV (cv2.imread(...)) または Scipy (scipy.ndimage.imread(...)) を使用して画像ファイルを読み取るのが好きです。また、tensorflow には、使用できる独自のイメージ リーダーがあると思います。これら 2 つの関数は、画像を numpy 配列として返します。グレースケールまたはカラーが必要な場合は、引数で指定できます。次に、画像を前処理する必要があります。データ型を変換し (OpenCV は float32 ではなく 8 ビット整数を使用します)、データを正規化する必要がある場合があります。画像がすべて同じサイズでない場合は、この時点でサイズを変更することもできます。

次に、これらのnumpy配列を平坦化して、画像の平坦な表現を得ることができます. np.ndarray の flatten() 関数を呼び出すだけです。バッチに必要な画像を読み込んで平坦化したら、それらを numpy 配列につなぎ合わせます。np.array([img1, img2, ..., imgN])この配列は [画像, ピクセル] の形状になります。次に、これを x プレースホルダーにフィードできます。

于 2016-07-24T13:23:08.300 に答える
0

トレーニング用の場合はすべての画像を前処理することをお勧めしますが、Tensorflow をライブ画像ストリームでオンラインで使用するには、メモリ内のデータを動的に変更する次の方法を試します。

any_shape = [the most natural shape according to the data you already have...]
x_unshaped = tf.placeholder(tf.float32, any_shape)
x = tf.reshape(x_unshaped, [-1, image_size])

データがメモリ内で既に適切に並べられている場合は、次のことを試すことができますtf.Tensor.set_shape()

tf.Tensor.set_shape() メソッドは、Tensor オブジェクトの静的な形状を更新します。これは通常、直接推論できない場合に追加の形状情報を提供するために使用されます。テンソルの動的形状は変更されません。

ソース: https://www.tensorflow.org/versions/r0.9/api_docs/python/framework.html

于 2016-07-25T01:18:56.637 に答える