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: 36
Registriert: Mittwoch 13. September 2017, 06:10

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: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

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

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: 13074
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

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: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

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