List extend Problem

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
mre17
User
Beiträge: 7
Registriert: Samstag 26. Dezember 2020, 21:27

Hallo liebe Python Freunde,

ich habe folgendes Problem: Ich führe eine For Schleife aus und die Werte werden nacheinander evaluiert und auch richtig ausgegeben, nur wird der letzte Wert lediglich gespeichert. Da ich aber alle Werte in einer Liste benötige wollte ich diese in einer Liste z zusammenführen. Hier für habe ich die Funktion extend verwendet, aber irgendwie möchte das noch nicht ganz klappen. Statt der gewünschten "vollständigen" Liste mit den evaluierten Werten, erhalte ich lediglich die letzte Zahl. Programmcode sieht folgendermaßen aus:
# Vanilla PT1 LSTM
import matplotlib.pyplot as plt
import numpy as np
from more_itertools import chunked, intersperse

from numpy import array
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense

#################PT1 Datensatz###############
K=2
T=1
t=np.linspace(0,15)
a=K*(1-np.expm1(-t/T))
Zeitschiene = a.tolist()

plt.plot(t,a)
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend()
plt.show()
#############################################

# split a univariate sequence into samples
def split_sequence(sequence, n_steps):
X, y = list(), list()
for i in range(len(sequence)):
# find the end of this pattern
end_ix = i + n_steps
# check if we are beyond the sequence
if end_ix > len(sequence)-1:
break
# gather input and output parts of the pattern
seq_x, seq_y = sequence[i:end_ix], sequence[end_ix]
X.append(seq_x)
y.append(seq_y)
return array(X), array(y)

# define input sequence Train
raw_seq = Zeitschiene[0:30]
# choose a number of time steps
n_steps = 3

#define input sequence Prediction
Vorhersagedatensatz=Zeitschiene[31:50]

######################Trainingsdatensatz###############
# split into samples
X, y = split_sequence(raw_seq, n_steps)
# reshape from [samples, timesteps] into [samples, timesteps, features]
n_features = 1
X = X.reshape((X.shape[0], X.shape[1], n_features))
# define model
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# fit model
model.fit(X, y, epochs=200, verbose=0)
########################################################

#Übungsdatensatz
C, d = split_sequence(Vorhersagedatensatz, n_steps)
# reshape from [samples, timesteps] into [samples, timesteps, features]
n_features = 1
C = C.reshape((C.shape[0], C.shape[1], n_features))


for i in C:
i = i.reshape((1, n_steps, n_features))
yhat = model.predict(i, batch_size=None, verbose=0, steps=None, callbacks=None, max_queue_size=10,
workers=1, use_multiprocessing=False)

print(yhat)
z=[]
z.extend(yhat)


Im fettgedruckten Teil befindet sich höchstwahrscheinlich der "Fehler" ich finde diesen bloß nicht. Auch die erstellte Variable z merkt sich lediglich den letzten Werte statt aller.
Benutzeravatar
ThomasL
User
Beiträge: 1379
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Überlege mal, wo die Zeile z = [] zu stehen hat.....
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten