Skip to content

Commit a09f0d7

Browse files
committed
[FIX] input_signature
1 parent 62670cd commit a09f0d7

File tree

10 files changed

+154
-175
lines changed

10 files changed

+154
-175
lines changed

forecasting/app.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,25 @@
2424

2525
# Selector de modelo en el sidebar
2626
model_selector = st.sidebar.selectbox("Selecciona el modelo a utilizar:", list(models.keys()))
27-
2827
# Especificación de datos en el sidebar
2928
st.sidebar.markdown("# Parámetros de Entrada:")
29+
n_steps = st.sidebar.slider("Número de pasos temporales de las series", 4, 200, 100, 2)
3030
val = st.sidebar.radio("Inclinación", (False, True))
3131
n = st.sidebar.slider("Número total de series", 2, 200, 25, 1)
3232
i_serie = st.sidebar.slider("Serie a considerar", 0, n - 1, 0, 1)
33+
steps = st.sidebar.slider("Número de pasos del modelo", 2, n_steps - 2, 16, 2)
34+
val_train = st.sidebar.radio("Re-entrenamiento", (False, True))
3335
p_train = st.sidebar.slider("Proporción de entrenamiento", 0.2, 1.0, 0.7, 0.1)
34-
steps = st.sidebar.slider("Número de pasos del modelo", 1, 20, 16, 1)
3536

3637
# Generación de los datos
37-
n_steps = 100
3838
data_ = generate_series(n, n_steps=n_steps, incline=val)
3939
scaler = DataScaler(np.copy(data_))
4040
data_scale = scaler.rescale()
4141
series = convert_to_df(np.copy(data_)).describe()
4242

4343
train, test = create_train_test_set(np.copy(data_scale), p_train=p_train, steps=steps)
44-
neural_network.fit(train[0][:, :, np.newaxis], train[1], verbose=0)
44+
if val_train:
45+
neural_network.fit(train[0][:, :, np.newaxis], train[1], verbose=0)
4546

4647
# Sección de estadísticas descriptivas de los datos
4748
st.header("Estadísticas Descriptivas de los Datos")
@@ -63,11 +64,12 @@
6364
fig2 = plot_series(convert_to_df(data_), prediction, i=i_serie)
6465
st.plotly_chart(fig2)
6566

66-
# Error cuadrático medio (RMSE)
67-
st.header("Evaluación del Modelo")
68-
st.write("A continuación se muestra el error cuadrático medio de la predicción:")
69-
rmse = model.evaluate(train[0][:, :, np.newaxis], train[1])[0]
70-
st.write(f"Error Cuadrático Medio (RMSE): {round(rmse, 4)}")
67+
if val_train:
68+
# Error cuadrático medio (RMSE)
69+
st.header("Evaluación del Modelo")
70+
st.write("A continuación se muestra el error cuadrático medio de la predicción:")
71+
rmse = model.evaluate(train[0][:, :, np.newaxis], train[1])[0]
72+
st.write(f"Error Cuadrático Medio (RMSE): {round(rmse, 4)}")
7173

7274
# Gráfico de la desviación
7375
st.header("Desviación de la Predicción")

forecasting/figure.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,40 @@
11
import plotly.express as px
2+
import plotly.graph_objects as go
23

34

45
def plot_series(df_series, data_pred, i=0):
56
df_plot = df_series.copy()
67
df_plot["prediction"] = data_pred[i, : len(df_plot)]
78

8-
cols_a_melt = [i, "prediction"]
9+
# Define los colores
10+
color_map = {str(i): "blue", "prediction": "red"}
911

10-
df_long = df_plot.reset_index().melt(
11-
id_vars="index", var_name="Serie", value_name="Valor", value_vars=cols_a_melt
12-
)
13-
14-
color_map = {str(i): "blue", "prediction": "red"} # Real series color # Prediction color
12+
fig = go.Figure()
1513

16-
fig = px.line(
17-
df_long,
18-
x="index",
19-
y="Valor",
20-
color="Serie",
21-
title=f"Serie real '{i}' vs Prediction",
22-
color_discrete_map=color_map,
14+
fig.add_trace(
15+
go.Scatter(
16+
x=df_plot.index,
17+
y=df_plot["prediction"],
18+
mode="lines",
19+
name="prediction",
20+
line=dict(width=2, dash="dashdot", color=color_map["prediction"]),
21+
)
2322
)
24-
fig.for_each_trace(
25-
lambda trace: (
26-
trace.update(line=dict(width=3))
27-
if trace.name == str(i)
28-
else trace.update(line=dict(width=2, dash="dot"))
23+
24+
fig.add_trace(
25+
go.Scatter(
26+
x=df_plot.index,
27+
y=df_plot[i],
28+
mode="lines",
29+
name=str(i),
30+
line=dict(width=3, dash="solid", color=color_map[str(i)]),
2931
)
3032
)
33+
34+
fig.update_layout(
35+
title=f"Serie real '{i}' vs Prediction", xaxis_title="Index", yaxis_title="Valor"
36+
)
37+
3138
return fig
3239

3340

forecasting/model_tensor.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ def __init__(self, n_neurons, output_units):
2525
]
2626
)
2727

28-
def call(self, x):
28+
@tf.function(
29+
input_signature=[tf.TensorSpec([None, None, 1], tf.float32), tf.TensorSpec([], tf.bool)]
30+
)
31+
def call(self, x, training=False):
2932
x = self.network(x)
3033
return x
3134

@@ -98,6 +101,9 @@ def __init__(
98101
kernel_regularizer=kernel_regularizer,
99102
)
100103

104+
@tf.function(
105+
input_signature=[tf.TensorSpec([None, None, 1], tf.float32), tf.TensorSpec([], tf.bool)]
106+
)
101107
def call(self, inputs, training=False):
102108
x = self.conv(inputs)
103109
x = self.batch_norm(x, training=training)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
����������ҷ�Ҏ�������ŧF ��������(���������2
1+
Ѣ�����r�������x彻�暎�F �ӏ�����0(���Ҝ����2

forecasting/models/model_tensor/keras_metadata.pb

Lines changed: 29 additions & 29 deletions
Large diffs are not rendered by default.
730 KB
Binary file not shown.
Binary file not shown.
0 Bytes
Binary file not shown.

forecasting/series.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,10 @@ def create_train_test_set(data_series, p_train=0.7, steps=4):
4545
return [x_train, y_train], [x_test, y_test]
4646

4747

48-
def forecasting(model, train, m, scaler, steps=4.0):
49-
n = int(train.shape[1])
50-
n_periods = int((m - n) / steps)
48+
def forecasting(model, train, m, scaler, steps=4):
5149
data_pred = np.copy(train)
5250

53-
for step_ahead in range(n_periods + 1):
51+
for step_ahead in range(steps):
5452
y_pred_one = model.predict(data_pred[:, step_ahead:], verbose=0)
5553
data_pred = np.concatenate([data_pred, y_pred_one[:, :, np.newaxis]], axis=1)
5654
series_pred = scaler.scale(np.copy(data_pred[:, :, 0]))

0 commit comments

Comments
 (0)