Je tente de recréer un CNN à partir d'un document de recherche, mais je suis encore novice en matière d'apprentissage profond.
On me donne un patch 3d de taille 32x32x7. Je veux d'abord effectuer une convolution de taille 3x3 avec 32 caractéristiques et un stride de 2. Ensuite, à partir de ce résultat, je dois effectuer une convolution 3x3x4 avec 64 caractéristiques et un stride de 1. Je ne veux pas faire de pool ou avoir une fonction d'activation entre les deux convolutions. Pourquoi ne puis-je pas simplement introduire les résultats de ma première convolution dans la seconde ?
import tensorflow as tf
sess = tf.InteractiveSession()
def conv3d(tempX, tempW):
return tf.nn.conv3d(tempX, tempW, strides=[2, 2, 2, 2, 2],
padding='SAME')
def conv3d_s1(tempX, tempW):
return tf.nn.conv3d(tempX, tempW, strides=[1, 1, 1, 1, 1],
padding='SAME')
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1)
return tf.Variable(initial)
x = tf.placeholder(tf.float32, shape=[None, 7168])
y_ = tf.placeholder(tf.float32, shape=[None, 3])
W = tf.Variable(tf.zeros([7168,3]))
#first convolution
W_conv1 = weight_variable([3, 3, 1, 1, 32])
x_image = tf.reshape(x, [-1, 32, 32, 7, 1])
h_conv1 = conv3d(x_image, W_conv1)
#second convolution
W_conv2 = weight_variable([3, 3, 4, 1, 64])
h_conv2 = conv3d_s1(h_conv1, W_conv2)
Merci !