SyntaxError invalid syntax durch !find

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CodeIt
User
Beiträge: 26
Registriert: Mittwoch 13. September 2017, 06:10

Dienstag 12. Februar 2019, 21:22

Hallo, ich versuche eine CNN zu implementieren und erhalte einen SyntaxError mit der Meldung "invalid Syntax".

Dabei wird in folgender Zeile das Ausrufezeichen "!" rot markiert:

Code: Alles auswählen

beispiel_bilder = !find($train_image_files_path -type f -name "*.jpg"

Der Code wurde ursprünglich mit einen JupyterNotebook geschrieben, aber nicht von mir, ich habe diesen lediglich kopiert. Ich erhalte zusätzlich noch beim Idle die Meldung "Using TensorFlow backend". Kann das damit zusammenhängen?


Code: Alles auswählen

import cv2
import numpy as np
import pandas as pd
import random
import matplotlib.pyplot as plt
#matplotlib inline

# image processing
from keras.preprocessing import image as image_utils
from keras.preprocessing.image import img_to_array

# build your own nets
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D
from keras.optimizers import RMSprop
from keras.layers.normalization import BatchNormalization
from keras.layers.advanced_activations import LeakyReLU

train_image_files_path = "c://Python35/workspace/fruits/fruits-360/Training/"
valid_image_files_path = "c://Python35/workspace/fruits/fruits-360/Test/"

fruit_list = ["Kiwi", "Banana", "Apricot", "Avocado", "Cocos", "Clementine", "Mandarine", "Orange",
              "Limes", "Lemon", "Peach", "Plum", "Raspberry", "Strawberry", "Pineapple", "Pomegranate"]

output_n = len(fruit_list)
img_width = 20
img_height = 20
channels = 3

batch_size = 32
epochs = 5

beispiel_bilder = !find($train_image_files_path -type f -name "*.jpg"
__deets__
User
Beiträge: 6217
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 12. Februar 2019, 21:26

Jupyter notebook hat offensichtlich spezialsyntax. Das geht dann in purem Python nicht. Du musst dir die Bilder selbst zusammensammeln.
Benutzeravatar
sparrow
User
Beiträge: 1318
Registriert: Freitag 17. April 2009, 10:28

Dienstag 12. Februar 2019, 21:31

In der beanstandeten Zeile fehlt auf jeden Fall eine schließende Klammer.
Bis zur letzten Zeile sieht auch alles nach Python aus. !find ist nicht Python und auch die Benutzung der Variabel mit "$" sieht eher nach einer anderen Sprache aus.
Benutzeravatar
__blackjack__
User
Beiträge: 4042
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 12. Februar 2019, 21:45

IPython/Jupyter-Notebook benutzt das ! als Escape für etwas was in einer Shell des Betriebssystems ausgeführt werden soll. Die öffnende Klammer gehört da nicht hin und es ist das Unix/Linux ``find`` was da ausgeführt wird. Zudem muss es eine Umgebungsvariable mit dem Namen ``$train_image_files_path`` geben, damit das funktioniert.
“Programmieren ist ein Hobby, bei dem es einen riesigen Baumarkt mit quasi jedem Bauteil und Werkzeug und fast immer kostenlos gibt. Ob man deswegen in der Lage ist einen Kölner Dom zu bauen ist eine andere Frage. Arbeit steckt auf jeden Fall drin ;).” — Greebo, forum.ubuntuusers.de
CodeIt
User
Beiträge: 26
Registriert: Mittwoch 13. September 2017, 06:10

Dienstag 12. Februar 2019, 21:55

Vielen Dank.

ok, da ich kein IPython/Jupyter-Notebook und auch kein Unix/Linux benutze, muss ich den Code abändern.
Sirius3
User
Beiträge: 10362
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 13. Februar 2019, 08:38

Warum hier ein externes Programm aufgerufen wird, wo das doch ein Einzeiler mit pathlib ist??

Code: Alles auswählen

beispiel_bilder = list(pathlib.Path(train_image_files_path).rglob("*.jpg"))
Antworten