tf.nn.conv2d
Burada tensorflow'un belgelerine bakıyordum . Ama ne yaptığını ya da neyi başarmaya çalıştığını anlayamıyorum. Dokümanlar üzerinde diyor ki,
# 1: Filtreyi şekilli 2 boyutlu bir matrise düzleştirir
[filter_height * filter_width * in_channels, output_channels]
.
Şimdi ne yapıyor? Bu elemanlar arası çarpma mı yoksa sadece düz matris çarpma mı? Dokümanlarda belirtilen diğer iki noktayı da anlayamadım. Onları aşağıda yazdım:
# 2: Sanal bir şekil tensörü oluşturmak için giriş tensöründen görüntü yamaları çıkarır
[batch, out_height, out_width, filter_height * filter_width * in_channels]
.# 3: Her bir yama için, filtre matrisini ve görüntü yama vektörünü sağa çarpar.
Herkes bir örnek verebilir, (son derece yararlı) bir kod parçası olabilir ve orada neler olup bittiğini ve işlemin neden böyle olduğunu açıklamak gerçekten yararlı olacaktır.
Küçük bir kısmı kodlamayı ve operasyonun şeklini yazdırmayı denedim. Yine de anlayamıyorum.
Ben böyle bir şey denedim:
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)
Evrişimsel sinir ağlarının parçalarını ve parçalarını anlıyorum. Onları burada inceledim . Ama tensorflow uygulaması beklediğim gibi değil. Bu yüzden soruyu gündeme getirdi.
EDIT : Böylece, çok daha basit bir kod uyguladım. Ama neler olduğunu anlayamıyorum. Yani sonuçların nasıl olduğu. Biri bana bu çıktıyı hangi sürecin verdiğini söyleyebilseydi son derece yararlı olurdu.
input = tf.Variable(tf.random_normal([1,2,2,1]))
filter = tf.Variable(tf.random_normal([1,1,1,1]))
op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print("input")
print(input.eval())
print("filter")
print(filter.eval())
print("result")
result = sess.run(op)
print(result)
çıktı
input
[[[[ 1.60314465]
[-0.55022103]]
[[ 0.00595062]
[-0.69889867]]]]
filter
[[[[-0.59594476]]]]
result
[[[[-0.95538563]
[ 0.32790133]]
[[-0.00354624]
[ 0.41650501]]]]
tf.nn.conv2d()
, bu nedenleuse_cudnn_on_gpu=False
açıkça belirtilmediği sürece GPU desteği ile TF kullandığımızda söz konusu yöntem hiç kullanılmaz .