5
tensorflowでtf.nn.conv2dは何をしますか?
tf.nn.conv2d ここでテンソルフローのドキュメントを見ていました。しかし、私はそれが何をするのか、それが何を達成しようとしているのか理解できません。それはドキュメントで言う、 #1:フィルターを形状のある2次元行列に平坦化する [filter_height * filter_width * in_channels, output_channels]。 今それは何をしますか?その要素ごとの乗算ですか、それとも単なる行列乗算ですか?また、ドキュメントで言及されている他の2つのポイントも理解できませんでした。以下に書きました: #2:入力テンソルから画像パッチを抽出して、形状の仮想テンソルを形成します [batch, out_height, out_width, filter_height * filter_width * in_channels]。 #3:パッチごとに、フィルターマトリックスと画像パッチベクトルを右乗算します。 誰かが例を挙げ、コード(非常に役立つ)を多分提供し、そこで何が起こっているのか、なぜ操作がこのようになるのかを説明できれば非常に役立ちます。 小さな部分をコーディングして、操作の形を印刷してみました。それでも理解できません。 私はこのようなものを試しました: op = tf.shape(tf.nn.conv2d(tf.random_normal([1,10,10,10]), tf.random_normal([2,10,10,10]), strides=[1, 2, 2, 1], padding='SAME')) with tf.Session() as sess: result = sess.run(op) print(result) ビットと畳み込みニューラルネットワークの一部を理解しています。ここで勉強しました。しかし、テンソルフローの実装は私が期待したものではありません。それで問題を提起しました。 編集:それで、私ははるかに単純なコードを実装しました。しかし、私は何が起こっているのか理解できません。結果はこんな感じです。どのプロセスがこの出力を生成するかを誰かに教えてもらえれば、非常に役立ちます。 input = tf.Variable(tf.random_normal([1,2,2,1])) filter = tf.Variable(tf.random_normal([1,1,1,1])) op = …