Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#26 Le 09/08/2017, à 20:29

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Sub0 a écrit :

Senoyo,

t’as besoin d’apprendre les bases de bash avant tout j’ai l’impression…

Les sources fiables (la première est  accessible, la seconde pour les approfondissements) :
http://mywiki.wooledge.org/BashGuide
http://wiki.bash-hackers.org/

et pour vérifier ton code :

http://www.shellcheck.net/

Merci pour ces liens, mais je viens de Windows en Français (depuis 3.1 car MsDos était bien compliqué pour moi), ça me fait un choc ce passage à Ubuntu. Déjà que j'ai galéré à en arriver là roll depuis plusieurs jours...

Ça, c'est déjà pas mal ;-) https://doc.ubuntu-fr.org/tutoriel/script_shell

Dernière modification par senoyo (Le 09/08/2017, à 20:38)

Hors ligne

#27 Le 09/08/2017, à 21:08

Watael

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

et si, dans ta boucle, tu fais précéder ta commande d'un echo "$b" ?
ça correspond aux noms des fichiers du message d'erreur ?

on peut ajouter un test :

for f in *.jpg *.png
do
   echo -n "$repStyl/$b"
   test -f "$repStyl/$b" &&  echo " OK" || echo KO # et ainsi de suite pour tous les fichiers utilisés.
done

eval, c'est mal.

Hors ligne

#28 Le 09/08/2017, à 21:11

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Le problème provient du chemin.

for b in $HOME/img/styl/*.jpg *.png *.JPG *.PNG; 
do
   time th neural_style.lua \
   -content_weight 10 -style_scale 1 -style_weight 1000 \
   -content_image $HOME/img/cont/p01.jpg -style_image "$b" -output_image $HOME/img/s101_"$b".png \
   -init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ; 
done

Il faudrait maintenant changer le nom de sortie "output" pour ne garder que le nom du fichier, sans son chemin et sans son extension.

Hors ligne

#29 Le 09/08/2017, à 21:54

Watael

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

un pas en avant, un pas en arrière.
on n'avance pas.


eval, c'est mal.

Hors ligne

#30 Le 09/08/2017, à 21:55

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Je n'y arrive pas.

Sinon, comment écrire qu'il faut chercher les fichiers "*.jpg..." dans le dossier "$HOME/img/styl/" sans que b soit le chemin et le fichier en même temps ?

Hors ligne

#31 Le 09/08/2017, à 22:05

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

la commande est lancée dans le dossier neural-style:

 cd ~/neural-style

Les fichiers source sont dans

~/img/styl/

Voilà le problème.

Dernière modification par senoyo (Le 09/08/2017, à 22:06)

Hors ligne

#32 Le 09/08/2017, à 22:12

Watael

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

comme tu l'as fait précédemment (ou presque) :

content_rep="$HOME/img/styl"

cd /je/ne/sais/pas/où_sont_tes_images/ # pour faire simple.

for f in *.{jpg,png} # f comme fichier, parce que b comme bichier, ça marche pas. !o!
do
   test -f "$content_rep/$f" && echo "$content_rep/$f existe :)" || echo "$content_rep/$f n'existe pas :("
done

Dernière modification par Watael (Le 09/08/2017, à 22:12)


eval, c'est mal.

Hors ligne

#33 Le 09/08/2017, à 22:20

Hizoka

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Sinon, comment écrire qu'il faut chercher les fichiers "*.jpg..." dans le dossier "$HOME/img/styl/" sans que b soit le chemin et le fichier en même temps ?
...
Il faudrait maintenant changer le nom de sortie "output" pour ne garder que le nom du fichier, sans son chemin et sans son extension.

Juste pour info en coup de vent :

adresse="/home/hizoka/Fichier.ext"
nom="${adresse##*/}"
nomsansext="${nom%.*}"
dossier="${adresse%/*}"
ext="${adresse##*.}"

Hors ligne

#34 Le 09/08/2017, à 22:30

Watael

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

j'y serai arrivé, un peu plus tard.
j'essayais de rester simple, d'avancer un pas à la fois, sans effrayer notre ami qui vient de W$.

là, je viens de l'entendre du fond de ses 36ème dessous : « WTF ? »

Dernière modification par Watael (Le 09/08/2017, à 22:31)


eval, c'est mal.

Hors ligne

#35 Le 09/08/2017, à 23:00

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Merci Hizoka, c'est vrai que je commence à avoir la tête qui fume...:o:rolleyes:

for f in $HOME/img/styl/*.jpg *.png *.JPG *.PNG;
do
   time th neural_style.lua \
   -content_weight 10 -style_scale 1 -style_weight 1000 \
   -content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/s101_"${f%.*}".png \
   -init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done
"${f%.*}".png
for f in $HOME/img/styl/*.jpg *.png *.JPG *.PNG;
do
   time th neural_style.lua \
   -content_weight 10 -style_scale 1 -style_weight 1000 \
   -content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/s101_"$($f .${f##*.})".png \
   -init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done
"$($f .${f##*.})".png

Ca ne fonctionne pas non plus...

Hors ligne

#36 Le 09/08/2017, à 23:29

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

content_rep="$HOME/img/styl"
cd ~/neural-style
for f in *.{jpg,png} 
do
   test -f "$content_rep/$f" && echo || echo "$content_rep/$f 
done

Je ne comprend pas ce que tu veux me dire...

Hors ligne

#37 Le 09/08/2017, à 23:46

Sub0

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

@senoyo : si tu ne prends pas le temps d’apprendre les bases de la syntaxe de bash, tu n’es pas prêt de retrouver une température neuronale normale ^^

Il ne te manque que les principes de base pour arriver à ce que tu veux. Mais personne ne pourra les apprendre à ta place.
Le risque, c’est que tu te décourages à ne pas prendre ce temps, nécessaire et gratifiant.

Les japonais disent : « si tu es pressé, fais un détour ».
Ça marche particulièrement bien ici smile

Mes 2 centimes…


Seule alternative au bépo acceptée = stylo/papier.

Hors ligne

#38 Le 09/08/2017, à 23:50

Watael

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

senoyo a écrit :

Je ne comprend pas ce que tu veux me dire...

j'essaie de faire en sorte que tu saches retrouver tes fichiers.

senoyo a écrit :

Ca ne fonctionne pas non plus...

normal, tu fais n'importe quoi.

Sub0 a écrit :

Il [...] te manque [...] les principes de base pour arriver à ce que tu veux.


eval, c'est mal.

Hors ligne

#39 Le 10/08/2017, à 00:00

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

@senoyo : si tu ne prends pas le temps d’apprendre les bases de la syntaxe de bash, tu n’es pas prêt de retrouver une température neuronale normale ^^

Sauf que j'ai installé Ubuntu pour tester ce système d'image. Je demandais juste si quelqu'un pouvais m'aider à trouver une solution à mon questionnement. Je ne vais pas devenir programmeur ou autre, je ne vais pas me mettre à apprendre ce langage alors que je devrais déjà me remettre à l'anglais... J'ai déjà passé plus de temps a chercher que le temps que j'aurais mis à tout taper sans batch...
Je trouve ça dejà courageux de ma part et j'y ai mis énergie et temps.

Je trouve ça intéressant mais je ne suis vraiment pas fait pour ça.
C'est dommage quand même car on est proche de la solution.

.

Hors ligne

#40 Le 10/08/2017, à 00:07

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Dans tout les cas, je te remercie car j'ai quand même compris quelques grands principes grâce à tes explications au lieu de me donner directement une solution, mais là je suis bien fatigué...

Hors ligne

#41 Le 10/08/2017, à 00:21

Sub0

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

senoyo a écrit :
@senoyo : si tu ne prends pas le temps d’apprendre les bases de la syntaxe de bash, tu n’es pas prêt de retrouver une température neuronale normale ^^

Sauf que j'ai installé Ubuntu pour tester ce système d'image. Je demandais juste si quelqu'un pouvais m'aider à trouver une solution à mon questionnement. Je ne vais pas devenir programmeur ou autre, je ne vais pas me mettre à apprendre ce langage alors que je devrais déjà me remettre à l'anglais... J'ai déjà passé plus de temps a chercher que le temps que j'aurais mis à tout taper sans batch...
Je trouve ça dejà courageux de ma part et j'y ai mis énergie et temps.

Je trouve ça intéressant mais je ne suis vraiment pas fait pour ça.
C'est dommage quand même car on est proche de la solution.

On a tous nos raisons big_smile
La solution t’as été donnée. Elle ne manque pas, il te manque juste de quoi l’appliquer.
Il ne s’agit pas d’apprendre à programmer, mais de se débrouiller un peu avec les bases de l’environnement GNU/Linux (dont on peut se passer, souvent, mais pas toujours - ou pour certains, comme beaucoup ici, pour rien au monde ^^)

Il n’y avait pas de mauvais ton dans ce que je te disais, faut pas le prendre mal, juste un conseil (on a tous débuté) bienveillant, pour éviter d’en arriver à :

senoyo a écrit :

là je suis bien fatigué...

Plus un appel à souffler un coup en lisant tranquillement, plutôt qu’à t’acharner. Souvent, un petit détour vers un truc simple, et la solution arrive toute seule !
Des trucs simples : utilser « * », comprendre l’arborescence des fichier, « . », « .. », etc. Tu sais visiblement faire une boucle et deux-trois trucs. Ce que tu as a apprendre présentement est plus simple encore. Avec le temps que t’as passé à t’acharner, t’aurais eu ce qu’il fallait. Vraiment !

Alors, n’abandonne pas, mais prends ton temps (à moins que tu ais une nécessité pressante de faire ce que tu souhaites faire, là c’est un peu différent).
Avec un tout petit peu de patience, en prenant les choses par étape, tu y arriveras sans aucune difficulté (t’es pas loin), et c’est gratifiant.

Personne a un petit tuto fiable en français pour débutant ?

(Et profite de ton excurssion linuxienne et de ta « bonne raison » pour y rester big_smile)

Dernière modification par Sub0 (Le 10/08/2017, à 00:27)


Seule alternative au bépo acceptée = stylo/papier.

Hors ligne

#42 Le 10/08/2017, à 01:04

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

On s'approche...

for f in $HOME/img/styl/*.{jpg,png}
do
   cd ~/neural-style
   time th neural_style.lua \
   -content_weight 10 -style_scale 1 -style_weight 1000 \
   -content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/"${f##*/}".png \
   -init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done; 
cd

Ca me donne des fichiers:  monfichier.jpg.png car j'utilise

"${f##*/}"

Pourquoi avec :

"${f%.*}"

ça ne fonctionne pas ?

Hors ligne

#43 Le 10/08/2017, à 01:55

Watael

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

ça donne "monfichier.png.png" parce que tu ajoutes ".png" après "${f##*/}" !


eval, c'est mal.

Hors ligne

#44 Le 10/08/2017, à 09:04

Hizoka

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

On recommence :

adresse="/home/hizoka/Fichier.ext"
nom="${adresse##*/}"
nomsansext="${nom%.*}" # Se fait en 2 étapes ! D'abord on récupère le nom avec extension puis on dégage l'extension.
dossier="${adresse%/*}"
ext="${adresse##*.}"

echo "${nom}" # renvoie Fichier.ext
echo "${nomsansext}" # Renvoie Fichier
echo "${ext}" # renvoie ext
echo "${dossier}" # Renvoie /home/hizoka
"$($f .${f##*.})".png

Quand tu fais ce genre de test ne le dis pas tongue

Pour les bases en français même si Watael est pas fan wink : http://abs.traduc.org/abs-fr

Hors ligne

#45 Le 10/08/2017, à 13:06

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

Pour les bases en français même si Watael est pas fan wink : http://abs.traduc.org/abs-fr

Super, c'est trés complet et en français :-)


Voilà, ça ça fonctionne :

for f in $HOME/img/styl/*.{jpg,png}
do
   cd ~/neural-style
   n="${f##*/}"; s="${n%.*}"
   time th neural_style.lua \
   -content_weight 10 -style_scale 1 -style_weight 1000 \
   -content_image $HOME/img/cont/p01.jpg -style_image "$f" -output_image $HOME/img/"$s".png \
   -init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
done; 
cd

Est-ce que l’écriture est correcte ?

.

Dernière modification par senoyo (Le 10/08/2017, à 13:53)

Hors ligne

#46 Le 10/08/2017, à 14:51

senoyo

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

FINI ! :-)

tableau=( '1: 10 1.2 1000'
'2: 100 1 500'
'3: 100 2 1000000' )
for f1 in $HOME/img/cont/*.{jpg,png}
do
  for f2 in $HOME/img/styl/*.{jpg,png}
  do
    for i in "${tableau[@]}"
    do
     cd ~/neural-style
     read numLigne val1 val2 val3 <<<"$i"
     n1="${f1##*/}"; s1="${n1%.*}"
     n2="${f2##*/}"; s2="${n2%.*}"
     time th neural_style.lua \
     -content_weight "$val1" -style_scale "$val2" -style_weight "$val3" \
    -content_image "$f1" -style_image "$f2" -output_image $HOME/img/"$s1"-"$s2"_$val1-$val2-$val3.png \
    -init image -gpu 0 -backend cudnn -normalize_gradients -print_iter 10 -save_iter 0 -num_iterations 10 -image_size 80 ;
   done;
  done; 
done;
cd

-



MERCI beaucoup à Watael ainsi qu'à Sub0 et Hizoka ! :-) big_smilecool


.

-

Hors ligne

#47 Le 10/08/2017, à 16:53

Hizoka

Re : [RÉSOLU] Faire une boucle de commande multi-paramettres / batch

De rien smile

Hors ligne