Wieso erkennt die Keras Bild-KI das Testbild nicht?

Hallo,

ich versuche eine Bild-KI in Colab mit Tensorflow Keras zu erstellen, aber irgendwie geht es nicht so recht.

latent_dim = 100

# Generator-Modell definieren
generator = keras.models.Sequential()
generator.add(layers.Dense(25 * 25 * 6, input_shape=(latent_dim,)))  # Anpassung der Anzahl der Ausgabe-Features
generator.add(layers.LeakyReLU(alpha=0.2))
generator.add(layers.Reshape((25, 25, 6)))  # Anpassung der Ausgabeformate
generator.add(layers.Conv2DTranspose(12, kernel_size=4, strides=2, padding="same"))
generator.add(layers.LeakyReLU(alpha=0.2))
generator.add(layers.Conv2DTranspose(12, kernel_size=4, strides=2, padding="same"))
generator.add(layers.LeakyReLU(alpha=0.2))
generator.add(layers.Conv2DTranspose(24, kernel_size=4, strides=2, padding="same"))
generator.add(layers.LeakyReLU(alpha=0.2))

# Diskriminator-Modell definieren
discriminator = keras.models.Sequential()
discriminator.add(layers.Conv2D(12, kernel_size=4, strides=2, padding="same", input_shape=(100, 100, 24)))  # Anpassung der Eingabeformate
discriminator.add(layers.LeakyReLU(alpha=0.2))
discriminator.add(layers.Conv2D(6, kernel_size=4, strides=2, padding="same"))
discriminator.add(layers.LeakyReLU(alpha=0.2))
discriminator.add(layers.Flatten())
discriminator.add(layers.Dense(1, activation='sigmoid'))

# GAN-Modell erstellen
gan = keras.models.Sequential()
gan.add(generator)
gan.add(discriminator)

latent_dim = 100

generator = keras.models.Sequential()
generator.add(layers.Dense(25 * 25 * 6, input_shape=(latent_dim,)))  # Anpassung der Anzahl der Ausgabe-Features
generator.add(layers.LeakyReLU(alpha=0.2))
generator.add(layers.Reshape((25, 25, 6)))  # Anpassung der Ausgabeformate
generator.add(layers.Conv2DTranspose(12, kernel_size=4, strides=2, padding="same"))
generator.add(layers.LeakyReLU(alpha=0.2))
generator.add(layers.Conv2DTranspose(12, kernel_size=4, strides=2, padding="same"))
generator.add(layers.LeakyReLU(alpha=0.2))
generator.add(layers.Conv2DTranspose(24, kernel_size=4, strides=2, padding="same"))
generator.add(layers.LeakyReLU(alpha=0.2))

discriminator = keras.models.Sequential()
discriminator.add(layers.Conv2D(12, kernel_size=4, strides=2, padding="same", input_shape=(100, 100, 24)))  # Anpassung der Eingabeformate
discriminator.add(layers.LeakyReLU(alpha=0.2))
discriminator.add(layers.Conv2D(6, kernel_size=4, strides=2, padding="same"))
discriminator.add(layers.LeakyReLU(alpha=0.2))
discriminator.add(layers.Flatten())
discriminator.add(layers.Dense(1, activation='sigmoid'))

gan = keras.models.Sequential()
gan.add(generator)
gan.add(discriminator)

Das Bild hat eine Größe von 100x100 Pixeln und eine Bit-Tiefe von 24.

Der Compiler sagt das hier:

ValueError: Exception encountered when calling layer "sequential_77" (type Sequential).
Input 0 of layer "dense_75" is incompatible with the layer: expected axis -1 of input shape to have value 3750, but received input with shape (None, 15000)

Ich würde mich über eine Antwort freuen.

Jannik

künstliche Intelligenz, Python, TensorFlow
Wieso funktioniert der Code nicht?

Ich versuche Conways game of life mit python turtle library zu programmieren, wieso funktioniert es nicht? hier ist der Code:

from turtle import *

import random

z = False

size = 50

speed(0)

cels = []

if z:

  for i in range(10):

    cels.append([])

    for j in range(10):

      c = random.randint(1,2)

      if c == 2:

        cels[i].append(True)

      elif c == 1:

        cels[i].append(False)

else:

  cels = [[False,False,False,False,False,False,False,False,False,False],

      [False,False,False,False,False,False,False,False,False,False],

      [False,False,False,True, False,False,False,False,False,False],

      [False,True, False,True, False,False,False,False,False,False],

      [False,False,True, True, False,False,False,False,False,False],

      [False,False,False,False,False,False,False,False,False,False],

      [False,False,False,False,False,False,False,False,False,False],

      [False,False,False,False,False,False,False,False,False,False],

      [False,False,False,False,False,False,False,False,False,False],

      [False,False,False,False,False,False,False,False,False,False]]

cel2 = cels

def mod(i):

  if i < 0:

    i*(-1)

    i

def squ():

  begin_poly()

  for i in range(4):

    forward(size)

    left(90)

  end_poly()

  p = get_poly()

  register_shape('on',p)

  resetscreen()

  speed(0)

  ht()

squ()

shape('on')

while True:

  clearstamps()

  penup()

  for i in range(10):

    for j in range(10):

      goto((j-5)* -size,(i-5)*size)

      if cels[j][i]:

        stamp()

  for i in range(10):

    for j in range(10):

      count = 0

      if cels[(j-1)%10][(i-1)%10]:

        count+=1

      if cels[j][(i-1)%10]:

        count+=1

      if cels[(j+1)%10][(i-1)%10]:

        count+=1

      if cels[(j-1)%10][i]:

        count+=1

      if cels[(j+1)%10][i]:

        count+=1

      if cels[(j-1)%10][(i+1)%10]:

        count+=1

      if cels[j][(i+1)%10]:

        count+=1

      if cels[(j+1)%10][(i+1)%10]:

        count+=1

      if cels[j][i]:

        if count > 3 or count < 2:

          cel2[j][i] = False

      elif count == 3:

        cel2[j][i] = True

  cels = cel2

  ontimer(None,3000)

Programmiersprache, Python, Python 3
Pygame Vampire Survivors?

Hallo ich programmiere gerade ein Spiel in Pygame das dem Spiel Vampire Survivors ähnelt ich habe aktuell das problem das Problem das wenn der spieler auf die Gegner hinzu läuft die Gegener nach hinten verschoben werden staat nach vorn weil.

Also aktuell wenn ich stehe laufen die Gegner auf mich zu.

Und wenn ich von den Gegnern weg laufe werden sie aus dem Screen geschoben.

Aber wenn ich auf sie zu laufe werden sie auch aus dem Screen geschoben.

Obwohl sie dann normal laufen sollen als ob der spieler steth hier der wichtige code:   def update(self, dt, player, screen_width, screen_height):

    if not self.collided_with_enemy and self.is_visible:

      dx = player.x - self.x

      dy = player.y - self.y

      distance = max(1, pygame.math.Vector2(dx, dy).length())

      direction = pygame.math.Vector2(-dx / distance, -dy / distance)

      player_rect = pygame.Rect(player.x, player.y, player.hitbox_width, player.hitbox_height)

      enemy_rect = pygame.Rect(self.x, self.y, self.hitbox_width, self.hitbox_height)

      if player_rect.colliderect(enemy_rect):

        player.handle_collision()

        self.speed = 0

        return

      if dx != 0 and dy != 0:

        dx = 0

        dy = 0

      speed_multiplier = self.speed * dt

      if player.is_moving:

        speed_multiplier *= 0.5

      # Anpassung der Bewegungsrichtung basierend auf dem Spielerstatus

      if player.is_moving:

        self.x -= direction.x * speed_multiplier

        self.y -= direction.y * speed_multiplier

      else:

        self.x += direction.x * speed_multiplier

        self.y += direction.y * speed_multiplier

      self.x = max(-self.hitbox_width, min(self.x, screen_width))

      self.y = max(-self.hitbox_height, min(self.y, screen_height))

      self.animation_timer += dt

      if self.animation_timer >= self.animation_speed:

        self.animation_timer = 0

        self.current_frame = (self.current_frame + 1) % self.animation_frames

      # Anpassung der Geschwindigkeit basierend auf der Bewegungsrichtung des Spielers

      player_direction = pygame.math.Vector2(player.x - self.x, player.y - self.y)

      player_distance = max(1, player_direction.length())

      player_direction = player_direction.normalize()

      dot_product = player_direction.dot(direction)

      if dot_product > 0.5:

        # Spieler bewegt sich dem Gegner entgegen

        self.speed = self.original_speed + 100

      else:

        # Spieler bewegt sich vom Gegner weg

        self.speed = self.original_speed - 100

    else:

      self.x += self.direction * self.speed * dt

      self.collided_with_enemy = False

    for enemy in enemies:

      if check_enemy_collision(player, enemy):

        break

Java, JavaScript, Minecraft, C Sharp, Programmiersprache, Python, Python 3, Unity, Pygame
Wo schlagt ihr nach, wenn ihr euch nicht auskennt beim Programmieren?

Hallo Leute, ich will nur Fragen, was ihr macht, wenn ihr nicht weiter wisst bei einem Projekt, während ihr programmiert. 

Weil ich möchte programmieren und ich möchte meiden Internet Seiten (die mit fertig geschriebenen) und YouTube Tutorials zu verwenden, während ich programmiere, da dort die Codes fertig geschrieben sind und ich sie nicht komplett abschreiben möchte, aber ich könnte mir den Code zumindest durchlesen.

Ich würde lieber im Internet die offizielle Dokumentationen der Programmiersprachen zur Hand nehmen und wenn es wirklich ein spezifisches Problem ist, könnte ich diese oben genannten Methoden verwenden, die ich normalerweise Meiden würde und wahrscheinlich auch Foren wie auf Reddit und Stack Overflow verwenden (obwohl mir Stack Overflow immer sehr unsympathisch wirkt).

Mir ist es bewusst, dass das alles Selbstverständlich ist sowas zu tun, aber in der Schule wurde uns sowas nicht so gelehrt sowas zu machen, sondern uns wurden die Zetteln/Word Dateien gegeben, mit Trockenen Erklärungen und meistens stumpfes Auswendiglernen. Die Aufgaben, die uns die Professoren geben sind recht unverständlich und trotz das wir sie Fragen stellen konnten, haben sie niemanden beim Programmieren geholfen, sowie als wollen sie uns dazu bringen das Programmieren zu hassen.

Versteht mich nicht falsch, ich finde Programmieren trotzdem interessant und will es auch erlernen, aber das was man in der Schule lernt ist nichts. Wir haben dort nie wirklich was mit GC oder Memory Allocations gehabt, sondern haben meistens oberflächlich mit VS 2019 mit C# gelernt. Die Sprache ist eigentlich recht verständlich, aber in der Schule war es eben recht schmerzhaft zu lernen.

Programmiersprachen die ich lernen möchte sind C# und Python zurzeit. In der Zukunft auch Rust, aber das würde ich später lernen.

Wie ist es bei euch so?

Danke LG

Software, App, Programm, Webseite, programmieren, C Sharp, Entwicklung, Programmiersprache, Python, Softwareentwicklung, Rust, Entwicklertools
Warum wird die Variable zu 0 gesetzt, wenn ich mit der Variable rechne?

Ich mache gerade eine Programmiersprache in Python und mache es gerade, so dass man mit integers rechnen kann, aber wenn ich mit der Variable rechne wird sie zu 0.

Hier ist die Python-Klasse:

class Var:
    def __init__(self, type, ln, new):
        self.type = type
        self.ln = ln
        if (self.type == "int" and new == True):
            self.newInt()
        if (new == False):
            if (self.type == "int" and self.ln.__contains__("+=") or self.type == "int" and self.ln.__contains__("-=") or self.type == "int" and self.ln.__contains__("*=") or self.ln.__contains__("/=") and self.type == "int"):
                self.useInt()
    def newInt(self):
        name = self.ln[self.ln.find("<") + 1 : self.ln.find(">")]
        declaration = "0"
        if self.ln.__contains__("§int <" + name + "> = {" and self.ln.__contains__("}")):
            declaration = self.ln[self.ln.find("{") + 1 : self.ln.find("}")]
        math = Math(declaration)
        num = math.calculate(declaration)
        ints[name] = num
        print(ints)
    def useInt(self):
        name = self.ln[self.ln.find("<") + 1 : self.ln.find(">")]
        changeType = None
        if (self.ln.__contains__("+=")):
            changeType = "+"
        elif (self.ln.__contains__("-=")):
            changeType = "-"
        elif (self.ln.__contains__("*=")):
            changeType = "*"
        elif (self.ln.__contains__("/=")):
            changeType = "/"
        else:
            changeType = "+"
        change = self.ln[self.ln.find("{") + 1 : self.ln.find("}")]
        math = Math(change)
        num = math.calculate(change)
        if (num is not None):
            if (changeType == "+"):
                ints[name] += num
            elif (changeType == "-"):
                ints[name] -= num
            elif (changeType == "*"):
                ints[name] *= num
            elif (changeType == "/"):
                ints[name] /= num
            else:
                Error.unkownCalculation()
            print(ints)
        else:
            Error.calculation()

Hier ist der Code in der Datei, die ich lese:

§int <Jar> = {1 + 3 - 2}
$int <Jar> += {1 + 3}

Hier ist der Code vom File-Reader:

def main():
    with open("main.ep", "r") as f:
        lines = f.readlines()
        rln = 0
        ln = lines[rln]
        linesInFile = sum(1 for _ in open("main.ep", "rbU"))
        print("\n\n")
        #This line here is to check if the Code works properly
            #print(linesInFile)
        while (True):
            #code reader:
            if (ln != ""):
                if ln.__contains__("System."):
                    System(ln)
                if ln.__contains__("§int"):
                    Var("int", ln, True)
                elif (ln.__contains__("$int")):
                    Var("int", ln, True)
            #Checking if line there
            if (rln == linesInFile - 1):
                break;
            else:
                rln += 1;
                ln = lines[rln]
main()
programmieren, Programmiersprache, Python, Python 3, Pycharm
Vererbung von Klassen in Python mit super()?

Hallo Community,

ich habe hier jetzt schon oft gefragt, was diese drei Zeilen bedeuten:

class HangmanGame(BoxLayout):
      def __init__(self, **kwargs):
          super().__init__(**kwargs)

Den gesamten Code gibt es hier zum nachlesen:
https://www.gutefrage.net/frage/wozu-das-super-initkwargs

Jetzt habe ich schon viele Antworten bekommen, vor allem von regex9 und KarlRanseierlll denen ich hier auch noch mal danken möchte.

Aber ich habe es immer noch nicht ganz verstanden und ich bin inzwischen echt verzweifelt. Ich habe aber ein Video dazu gefunden, was ich hier eben verlinke:
https://www.youtube.com/watch?v=QUHnJrFouv8&list=PLzMcBGfZo4-kSJVMyYeOQ8CXJ3z1k7gHn

Konkret geht es um Minute 1:10-3:50. Da sagt er ja, man wisse nicht, wie viele Argumente man bekommt.

Dazu habe ich dann auch direkt meine erste Frage. Ich verstehe nämlich nicht, welche Argumente er meint. Die in der __init__() Methode der Klasse, oder die die man beim erstellen einer Instanz in den Klammer übergeben kann, oder ganz andere? Und wen er die beim erstellen der Instanz meint, frage ich mich, warum nur diese übergeben werden und nicht auch die aus der __init__()-Methode.

Meine zweite Frage wäre dann, ob die beiden Zeilen überhaupt zusammenhängen, oder ob in der Zeile mit dem super() andere kwargs gemeint sind.

Und meine dritte und letzte Frage wäre, warum man diese kwargs-Argumente an die Basisklasse BoxLayout übergeben muss. Bei dieser Frage bitte ich um eine ausführliche aber einfache Antwort. Ich bin nämlich erst 14 und echt nicht der beste in Python. Diese Frage aber bitte nur beantworten wenn Sie sich wirklich damit auskennen oder schon Erfahrung mit Kivy haben.

Ich würde mich unfassbar über jede Antwort freuen. Auch wenn ich weiß, dass ich schon öfter gefragt habe😁. Aber ich muss mich halt erst mal da reinarbeiten.

Viele Grüße

Code Snake🙂

programmieren, Programmiersprache, Python, Python 3, Objektorientierte Programmierung
Wozu das super()-__init__(**kwargs)?

Bei dem Code im Anhang, der Hangman als Python App mit dem Kivy Framework erstellt, weiß ich nicht wozu man die Zeile mit dem super() braucht. Also warum muss man die **kwargs Argumente an die Basisklasse weitergeben?

class HangmanGame(BoxLayout):    
    def __init__(self, **kwargs):
            super().__init__(**kwargs)
            self.word_list = ["python", "java", "ruby", "javascript", "php"]
            self.guess_word = []
            self.secret_word = ""
            self.remaining_guesses = 6
        self.img_path = "img/hangman_{}.png"
        self.create_game_layout()
        self.new_game()


    def create_game_layout(self):
        self.orientation = "vertical"
        self.image = Image(source=self.img_path.format(0))
        self.word_label = Label(text=" ".join(self.guess_word),
                                font_size="50sp",
                                halign="center",
                                valign="middle")
        self.remaining_guesses_label = Label(text=f"Remaining guesses: {self.remaining_guesses}")
        self.input_label = Label(text="Enter a letter:")
        self.input = TextInput(multiline=False)
        self.submit_button = Button(text="Submit", 

#Hier fehlt was unwichtiges, weil die Frage zu lang war

    def new_game(self):
        self.secret_word = random.choice(self.word_list)
        self.guess_word = ["_"] * len(self.secret_word)
        self.remaining_guesses = 6
        self.image.source = self.img_path.format(0)
        self.input.text = ""
        self.word_label.text = " ".join(self.guess_word)
        self.remaining_guesses_label.text = f"Remaining guesses: {self.remaining_guesses}"


    def check_letter(self, instance):
        letter = self.input.text
        if letter in self.secret_word:
            for i, c in enumerate(self.secret_word):
                if c == letter:
                    self.guess_word[i] = letter
            if "_" not in self.guess_word:
                self.end_game(True)
        else:
            self.remaining_guesses -= 1
            self.image.source = self.img_path.format(6 - self.remaining_guesses)
            self.remaining_guesses_label.text = f"Remaining guesses: {self.remaining_guesses}"
            if self.remaining_guesses == 0:
                self.end_game(False)
        self.input.text = ""
        self.word_label.text = " ".join(self.guess_word)


    def end_game(self, victory):
        message = "Congratulations, you won!" if victory else f"Sorry, the word was {self.secret_word}."
        self.remaining_guesses_label.text = message
        self.remove_widget(self.input_label)
        self.remove_widget(self.input)
        self.remove_widget(self.submit_button)
        self.add_widget(Button(text="New Game", on_press=self.new_game))



class HangmanApp(App):


    def build(self):
        Window.clearcolor = (0.5, 0.5, 0.5, 1)
        return HangmanGame()


HangmanApp().run()
programmieren, Python, Instanz, Python 3, Objektorientierte Programmierung
Python: Wieso wird bei diesem Skript keine Rückmeldung angezeigt?

Ich wollte nur fragen, was an diesem Python-Skript falsch ist. Es wird nur keine Rückmeldung angezeigt:

import pygame

# Initialisierung von Pygame
pygame.init()

# Fenstergröße festlegen
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Plattform-Spiel")

# Farben definieren
black = (0, 0, 0)
white = (255, 255, 255)

# Spielergröße und Position
player_width = 50
player_height = 50
player_x = window_width // 2 - player_width // 2
player_y = window_height - player_height

# Spielerbewegung
player_x_speed = 0
player_y_speed = 0
player_jump_power = -10
gravity = 0.5

# Plattformgröße und Position
platform_width = 200
platform_height = 20
platform_x = window_width // 2 - platform_width // 2
platform_y = window_height - platform_height - 50

# Hauptspielschleife
running = True

while running:
  window.fill(white)

  # Ereignisse verarbeiten
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      running = False
    elif event.type == pygame.KEYDOWN:
      if event.key == pygame.K_LEFT:
        player_x_speed = -5
      elif event.key == pygame.K_RIGHT:
        player_x_speed = 5
      elif event.key == pygame.K_SPACE:
        if player_y == window_height - player_height:
          player_y_speed = player_jump_power
    elif event.type == pygame.KEYUP:
      if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
        player_x_speed = 0

  # Spielerbewegung aktualisieren
  player_x += player_x_speed
  player_y += player_y_speed
  player_y_speed += gravity

  # Kollisionserkennung mit Plattform
  if player_y + player_height >= platform_y and player_y_speed >= 0:
    if player_x + player_width >= platform_x and player_x <= platform_x + platform_width:
      player_y = platform_y - player_height
      player_y_speed = 0

  # Spieler zeichnen
  pygame.draw.rect(window, black, (player_x, player_y, player_width, player_height))

  # Plattform zeichnen
  pygame.draw.rect(window, black, (platform_x, platform_y, platform_width, platform_height))

  # Fenster aktualisieren
  pygame.display.flip()

# Pygame beenden
pygame.quit()
Python, Python 3, Pygame

Meistgelesene Fragen zum Thema Python