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
Tipps für das Trainieren eines Neuronalen Netzes?

Hallo zusammen,

ich möchte versuchen, ob ich einem neuronalen Netz beibringen kann, Aktien-Kurse vorherzusagen.
Bzw. einfacher gesagt Aktien in Kaufenswert und Nicht-Kaufenswert zu Clustern.

Ich hab schon verschiedene Aktivierungsfunktionen getestet, ich habe schon verschiedene Lernraten getestet. Und ich habe schon verschieden viele Schichten mit verschieden vielen Neuronen getestet.

Allerdings sieht das Ergebnis nie so wirklich gut aus. Jetzt weiß ich nicht, ob ich was falsch mache oder ob meine Daten Müll sind.

Hätte hier jemand Tipps für mich?

So sieht mein Code aus:

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.callbacks import EarlyStopping
import matplotlib.pyplot as plt


# Daten einlesen
data = pd.read_csv("data1.csv")


# Input und Output Daten extrahieren
X = data.iloc[:, -7:].values
y = data.iloc[:, 3].values.reshape(-1, 1)


# Input Daten skalieren
scaler = MinMaxScaler()
X = scaler.fit_transform(X)


# Median der Output Daten berechnen
median = np.median(y)


# Output Daten in gute und schlechte Werte einteilen
y = np.where(y > median, 1, 0)


# Neuronales Netz definieren und trainieren
model = keras.Sequential([
    keras.layers.Dense(2048, input_dim=7, activation='relu'),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dense(2, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid')
])


learning_rate = 0.001
optimizer = keras.optimizers.Adam(lr=learning_rate)
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])


early_stopping = EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(X, y, epochs=1000, batch_size=10, validation_split=0.2, callbacks=[early_stopping])


# Vorhersagen treffen und Genauigkeit auswerten
y_pred = np.round(model.predict(X))
accuracy = np.mean(y_pred == y)
false_positives = np.sum((y_pred == 1) & (y == 0))
false_negatives = np.sum((y_pred == 0) & (y == 1))
true_positives = np.sum((y_pred == 1) & (y == 1))
true_negatives = np.sum((y_pred == 0) & (y == 0))


# Ergebnisse ausgeben
print("Genauigkeit:", accuracy)
print("Falsch-Positiv:", false_positives)
print("Falsch-Negativ:", false_negatives)
print("Wahr-Positiv:", true_positives)
print("Wahr-Negativ:", true_negatives)
print("Wahr: ", true_positives + true_negatives)
print("Falsch: ", false_positives + false_negatives)

# Verlauf der Genauigkeit und des Fehlers während des Trainings darstellen
fig, ax = plt.subplots()
ax.plot(history.history['loss'], label='Trainingsfehler')
ax.plot(history.history['val_loss'], label='Validierungsfehler')
ax.set_xlabel('Epochen')
ax.set_ylabel('Fehler')
ax.legend()
fig.savefig('error.png')


Aktien, Neuronale Netze, Python, TensorFlow

Meistgelesene Fragen zum Thema TensorFlow