3

Je tente de recréer un cnn à partir d'un document de recherche, mais je suis encore jeune à l'apprentissage en profondeur.tenseur de la taille des couches de convolution

Je reçois un patch 3d de taille 32x32x7. Je veux d'abord effectuer une convolution de taille 3x3 avec 32 fonctionnalités et une foulée de 2. Ensuite, à partir de ce résultat, je dois effectuer une convolution 3x3x4 avec 64 fonctionnalités et une foulée de 1. Je ne veux pas mettre en commun ou avoir une activation fonction entre les deux convolutions. Pourquoi ne puis-je pas alimenter les résultats de ma première convolution dans le second?

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!

+0

Quelle est l'erreur que vous voyez? – Engineero

Répondre

1

Après la première conv3d vous avez tenseur avec la forme [None, 16, 16, 4, 32], donc vous devez utiliser le noyau avec la forme [3, 3, 4, 32, 64] dans la deuxième conv3d_s1.