List extend Problem
Verfasst: Dienstag 29. Dezember 2020, 14:13
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.
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.