Использование tf.keras.metrics.R2Score приводит к ошибке в TensorflowPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование tf.keras.metrics.R2Score приводит к ошибке в Tensorflow

Сообщение Anonymous »

Я создаю модель регрессии с помощью Tensorflow, но когда я использую tf.keras.metrics.R2Score() в качестве метрики, она терпит неудачу с ValueError: запрошено преобразование тензора dtype int32 для Tensor с dtype float32: после первой эпохи. (Но до тех пор работает нормально). Однако, если я использую другую метрику (

Код: Выделить всё

tf.keras.metrics.RootMeanSquaredError()
, все работает нормально.

Код: Выделить всё

import pandas as pd

weather_states = pd.read_sql("SELECT stations.id, stations.capacity_kw, start, wind_speed_10m, wind_direction_10m, wind_speed_80m, wind_direction_80m, wind_speed_180m, wind_direction_180m FROM stations INNER JOIN weather_states ON stations.id = weather_states.station WHERE weather_states.source = 'openmeteo_forecast/history/best' AND stations.source = 'wind'", db_client)

grid_states = pd.read_sql("SELECT start, wind FROM grid_states", db_client)

def create_x_y(df: tuple[Any, pd.DataFrame]):
start = df[1]["start"].iloc[0]
res = df[1].sort_values("id").drop(["id", "start"], axis=1)
temp_wind = grid_states.loc[grid_states["start"] == start]["wind"].to_list()
wind_kw = temp_wind if len(temp_wind) >= 1 else None
res_flat_df = pd.DataFrame(res.to_numpy().reshape((1, -1)))
res_flat_df["wind_kw"] = wind_kw
return res_flat_df

data = pd.concat(map(create_x_y, weather_states.groupby("start"))).dropna()
from sklearn.model_selection import train_test_split

data = data.astype("float32")
train, test = train, test = train_test_split(data.dropna(), test_size=0.2)

train_y = train.pop("wind_kw")
train_x = train

test_y = test.pop("wind_kw")
test_x = test

norm = tf.keras.layers.Normalization()
norm.adapt(train_x)

model = tf.keras.Sequential([
norm,
tf.keras.layers.Dense(16, activation="linear"),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Dense(1, activation="linear"),
])

model.compile(
optimizer=tf.keras.optimizers.legacy.Adam(0.001),
metrics=[tf.keras.metrics.R2Score(dtype=tf.float32)],
loss=tf.keras.losses.MeanSquaredError(),
)

model.fit(train_x, train_y, epochs=7, batch_size=2)

tf.keras.models.save_model(model, 'wind.keras')

Код: Выделить всё

print(data.describe())

Код: Выделить всё

              0            1            2            3            4  ...          241          242          243          244      wind_kw
count    1896.0  1896.000000  1896.000000  1896.000000  1896.000000  ...  1896.000000  1896.000000  1896.000000  1896.000000  1896.000000
mean   144000.0     4.315717   189.610759     5.791377   193.830169  ...     3.881292   145.420359     4.572205   143.642405  1292.576958
std         0.0     2.482439   113.178764     2.926497   113.685887  ...     2.612259    93.293471     2.775681    94.721086   611.333721
min    144000.0     0.100000     1.000000     0.100000     1.000000  ...     0.100000     2.000000     0.000000     1.000000    34.263000
25%    144000.0     2.110000    88.000000     3.487500    90.000000  ...     1.900000    67.000000     2.500000    63.000000   793.109500
50%    144000.0     4.110000   199.000000     5.500000   231.000000  ...     3.075000   137.000000     3.940000   135.000000  1251.590000
75%    144000.0     6.220000   291.000000     7.882500   294.000000  ...     5.502500   205.000000     6.082500   205.000000  1761.926750
max    144000.0    11.670000   360.000000    15.210000   360.000000  ...    14.460000   360.000000    16.980000   360.000000  3008.125000

Код: Выделить всё

print(type(data))
#
print(data.dtypes)
#0          float32
#1          float32
#2          float32
#3          float32
#4          float32
#            ...
#241        float32
#242        float32
#243        float32
#244        float32
#wind_kw    float32
#Length: 246, dtype: object
print(data.shape)
#(1896, 246)
Кажется, я не могу найти в Интернете никакой информации об этой ошибке при использовании R2Score. Есть идеи, в чем может быть проблема?


Подробнее здесь: https://stackoverflow.com/questions/780 ... tensorflow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование tf.keras.metrics.R2Score приводит к ошибке в Tensorflow
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как TruePositive может быть десятичным числом в keras.metrics.TruePositives?
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как TruePositive может быть десятичным числом в keras.metrics.TruePositives?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Из keras.models, keras.layers и keras.optimizers импорт не разрешен.
    Anonymous » » в форуме Python
    0 Ответы
    91 Просмотры
    Последнее сообщение Anonymous
  • Подкласс Keras Model HDF5 (.keras). Ошибка сохранения формата при использовании tf.keras.Model.save() — TypeError: непод
    Anonymous » » в форуме Python
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»