j'essaye d'adapter ce code simple d'encodeur automatique: https://github.com/tflearn/tflearn/blob/master/examples/images/autoencoder.py. J'essaye de changer le code d'une manière qui utilise des couches convolutif et qui a une entrée de 488 images * 30 hauteur * 30 largeur * 3 canaux de couleur (RVB) [488, 30, 30, 3] et produit un nouveau image qui ressemble mais différente de l'original. Je n'utilise aucune sorte de jeu de données de validation (je ne me soucie pas de surapprentissage et je ne vois pas d'autre raison pour utiliser un jeu de données de validation que d'aider à prévenir le surapprentissage.) Je peux me tromper complètement, je voudrais savoir Si c'est le cas). Je suis un débutant, désolé de l'encodeur mal construit et décodeur.Essayer d'adapter le code de tflearn, erreur de forme
# Data loading and preprocessing
from reading import *
X = getDataColor() #A function that read my img data
total_samples = len(X)
np.random.seed(42) # For debugging and visualization purposes
X = np.reshape(X, newshape=[total_samples, 30, 30, 3])
X = X.astype('float32')/255. #For scaling
# Building the encoder
encoder = tflearn.input_data(shape=[None, 30, 30, 3])
encoder = tflearn.conv_2d(encoder,16, 3, activation='relu', padding='same', regularizer='L2')
encoder = tflearn.max_pool_2d(encoder,[2,2], padding='same')
encoder = tflearn.conv_2d(encoder,8, [3,3], activation='relu', padding='same')
encoder = tflearn.max_pool_2d(encoder,[2,2], padding='same')
encoder = tflearn.conv_2d(encoder,8, [3,3], activation='relu', padding='same')
encoder = tflearn.max_pool_2d(encoder,[2,2], padding='same')
# Building the decoder
decoder = tflearn.conv_2d(encoder,8, [3,3], activation='relu', padding='same')
decoder = tflearn.upsample_2d(decoder,[2,2])
decoder = tflearn.conv_2d(decoder,8, [3,3], activation='relu', padding='same')
decoder = tflearn.upsample_2d(decoder,[2,2])
decoder = tflearn.conv_2d(decoder,16, [3,3], activation='relu', padding='same')
decoder = tflearn.upsample_2d(decoder,[2,2])
decoder = tflearn.conv_2d(decoder,1, [3,3], activation='relu', padding='same')
# Regression, with mean square error
net = tflearn.regression(decoder, optimizer='adam', learning_rate=0.001,
loss='mean_square', metric=None)
# Training the auto encoder
model = tflearn.DNN(net, tensorboard_verbose=0)
gen_noise = np.random.uniform(-1, 1., size=[total_samples, 30, 30, 3])
#I'm trying to generate images based on this noise
#I couldn't think of any other way...
model.fit(gen_noise, X, n_epoch =10000,
run_id="auto_encoder", batch_size=total_samples)
Lorsque vous essayez d'exécuter le code complet je reçois l'erreur:
Log directory: /tmp/tflearn_logs/
---------------------------------
Training samples: 488
Validation samples: 0
--
Traceback (most recent call last):
File "autoCNN.py", line 66, in <module>
run_id="auto_encoder", batch_size=total_samples)
File "F:\Users\Kai\Miniconda3\lib\site-packages\tflearn\models\dnn.py", line 216, in fit
callbacks=callbacks)
File "F:\Users\Kai\Miniconda3\lib\site-packages\tflearn\helpers\trainer.py", line 339, in fit
show_metric)
File "F:\Users\Kai\Miniconda3\lib\site-packages\tflearn\helpers\trainer.py", line 818, in _train
feed_batch)
File "F:\Users\Kai\Miniconda3\lib\site-packages\tensorflow\python\client\session.py", line 789, in run
run_metadata_ptr)
File "F:\Users\Kai\Miniconda3\lib\site-packages\tensorflow\python\client\session.py", line 975, in _run
% (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (488, 30, 30, 3) for Tensor 'TargetsData/Y:0', which has shape '(?, 32, 32, 1)'
Pourquoi le 'TargetsData/Y: 0' ne possède la forme et comment pourrait-(, 32, 32, 1?) je le résous?
Cela a fonctionné! Merci: D –
Glad cela a fonctionné! Si vous avez trouvé cela utile, veuillez accepter la réponse :) –