Was bedeutet diese Schreibweise in Python?

4 Antworten

shape = (1, )

erzeugt ein Tupel mit dem eintrag 1.

Warum kann man nicht

shape=(1) 

schreiben?

Weil Python das sonst nicht auseinanderhalten könnte:

Schau mal den Ausdruck

x = 3*2 

an. Das Ergebnis ist ein int mit dem Wert 6.

Du kannst aber unnötige Klamern setzen:

 x = (3)*(2)

Das Ergebnis ist ebenfalls die Zahl 6.

Wenn du (1) schreibst, interpretiert das der Parser als 1 und erkennt, dass die Klammern unnötig sind:

>>> shape = (1)
>>> type(shape)
<class 'int'>
>>> shape
1
>>>

Durch das Komma zwingst du den Parser, den Klammerausdruck als Tupel zu behandeln:

>>> shape = (1,)
>>> type(shape)
<class 'tuple'>
>>> shape
(1,)
>>>

Ist etwas unschön, aber man gewöhnt sich dran

Erstmal steht da nicht shape(1,) sondern shape=(1,).

In diesem Fall handelt es sich um einen benannten Funktionsparameter, dessen Inhalt ein tuple mit exakt einem einzigen Element ist, nämlich 1.

Eigentlich hatte ich das beantwortet, die Antwort ist aber verschwunden:

tf.keras.layers.Input()

Aufruf einer Funktion/Methode

shape= ist ein KWord Arg, also die Übergabe eines Parameters via Name.

(1,) erzeugt ein Tupel, d.h. der Parameter shape wird auf das Tupel mit dem Wert 1 gesetzt.

Alles weitere zur Bedeutung steht in der Dokumentation der verwendeten Funktion und hat grundlegend nichts mit Python zu tun:

https://www.tensorflow.org/api_docs/python/tf/keras/Input

Schau dir am besten Tutorials zu Machine Learning in Python an.

Das hat weder etwas mit der Frage zu tun, noch dürfte es für den FS in auch nur irgendeiner Weise hilfreich sein...

2
@Isendrak

Wenn er schon in diesem Thema nicht versteht was shape bedeutet, dann ist es ratsam sich Tutorials anzuschauen. Hier alles zu erklären dauert zu lange. Es hat direkt mit der Frage zu tun.

0
@Beantworter375
dann ist es ratsam sich Tutorials anzuschauen

Ja, das ist es.

Allerdings eher Tutorials zu den Grundlagen von Python und nicht zu irgendeinem weiterführenden Thema.

2
@Isendrak

Schau mal den Code genauer an, er versucht hier offensichtlich mit Tensorflow ein Neuronales Netz herzustellen.

0
@Beantworter375

Vollkommen irrelevant.

Es geht hier um eine Frage zu einer der Grundlagen der Python-Syntax.

Ob diese Frage "zufälligerweise" im Kontext "neuronale Netzen", "asymmetrische Verschlüsselung" oder sonstwas gestellt ist, ist für die Tatsache, dass es um Grundlagen zur Python-Syntax geht genau so unerheblich, wie ob es in einer Frage zu Ferromagnetismus um theoretische Physik oder eine magnetische Messerhalterung für eine kleine Küche geht...

2
@Isendrak

Es ist nicht irrelevant. Man kann oberflächlich auf die Syntax eingehen oder eben auf die Bedeutung von shape eine Antwort geben. In diesem Kontext ist ein Grundverständnis vom Programmieren ohnehin erwartbar.

Nur auf die Syntax einzugehen war mir im Endeffekt zu oberflächlich, tut mir leid wenn dich das gestört hat. Auf solche Kleinigkeiten kann man nämlich im Netz schnell eine Antwort finden.

0
@Isendrak

Kann mich dem nur anschließen: Machine Learning ist im Zusammenhang mit dem Erlernen von Python ein kompletter Overkill. Ist so, als würde ich, um einen Speicherchip im Notebook auszutauschen erst mal Halbleiterphysik studieren.

1

Was möchtest Du wissen?