Табличные данные Fastai - плохой результат для простого набора данных - PullRequest
0 голосов
/ 28 сентября 2019

Я тестирую табличную модель fasttai и получаю неожиданные результаты.По сути, я пытаюсь предсказать y = x * x, используя входной фрейм данных, построенный на случайном x.

from fastai.tabular import *

# Build input dataframe
SIZE = 10000
df = pd.DataFrame({'x': np.random.randn(SIZE)})
df['y'] = df['x'] ** 2

# Create data object
dep_var = 'y'
cont_names = ['x']
data = (TabularList.from_df(df, cont_names=cont_names)
                           .split_by_rand_pct(valid_pct=0.1)
                           .label_from_df(cols=dep_var, label_cls=FloatList)
                           .databunch())

# Create model and learn
learn = tabular_learner(data, layers=[200,100], metrics=rmse)
learn.fit_one_cycle(5)

#epoch  train_loss  valid_loss  root_mean_squared_error time
#0  0.706821    0.472120    0.467643    00:01
#1  0.275269    0.077311    0.271610    00:01
#2  0.194118    0.133515    0.325397    00:01
#3  0.176048    0.076927    0.187314    00:01
#4  0.163826    0.078179    0.207878    00:01


# Display result
row = df.sample(1).iloc[0]
print(row)
learn.predict(row)  

# Typically:
# x = -1.582047 / y = 2.502874 / predicted_y = 2.324813

Я ожидаю, что глубокое обучение будет работать лучше, поэтому я, вероятно, что-то делаю не так.

Может кто-нибудь объяснить, почему у меня такие плохие результаты?

1 Ответ

0 голосов
/ 28 сентября 2019

Когда вы возводите в квадрат распределение случайных чисел, как это, вы обязательно получите несколько крошечных значений y, что может привести к некоторым арифметическим проблемам с плавающей запятой, которые могут повлиять на ваши результаты.

...