【问题标题】:Why is my margin of error graph so spikey tensorflow为什么我的误差幅度图如此尖峰张量流
【发布时间】:2021-01-06 13:21:20
【问题描述】:

所以每当我运行我的 TensorFlow 模型时,误差幅度 (loss / val_loss) 图都非常倒退和第四,我想知道如何才能阻止它/减少它这是一张图片 Graph

这里是代码,如果有人想运行它应该可以正常工作,只要你有点子

import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
import matplotlib.pyplot as plt
import datetime
import tensorboard

from keras.models import Sequential
from keras.layers import Dense

train_df = pd.read_csv('https://www.dropbox.com/s/ednsabkdzs8motw/ROK%20INPUT%20DATA%20-%20Sheet1.csv?dl=1')
eval_df = pd.read_csv('https://www.dropbox.com/s/irnqwc1v67wmbfk/ROK%20EVAL%20DATA%20-%20Sheet1.csv?dl=1')


train_df['Troops'] = train_df['Troops'].astype(float)
train_df['Enemy Troops'] = train_df['Enemy Troops'].astype(float)
train_df['Damage'] = train_df['Damage'].astype(float)
eval_df['Troops'] = eval_df['Troops'].astype(float)
eval_df['Enemy Troops'] = eval_df['Enemy Troops'].astype(float)
eval_df['Damage'] = eval_df['Damage'].astype(float)


damage = train_df.pop('Damage')
dataset = tf.data.Dataset.from_tensor_slices((train_df.values, damage.values))

test_labels = eval_df.pop('Damage')
test_features = eval_df.copy()


model = keras.Sequential(
    [
        tf.keras.layers.InputLayer(input_shape = (8,)),
        tf.keras.layers.Dense(8, activation='relu'),
        tf.keras.layers.Dense(64, activation='relu'),
        tf.keras.layers.Dense(64, activation='relu'),
        tf.keras.layers.Dense(1),
    ]
)


model.compile(optimizer='adam', loss='mean_squared_error')
model.summary()



history = model.fit(train_df, damage, validation_split=0.2, epochs=5000)

def plot_loss(history):
  plt.plot(history.history['loss'], label='loss')
  plt.plot(history.history['val_loss'], label='val_loss')
  plt.ylim([0, 2000])
  plt.xlabel('Epoch')
  plt.ylabel('Error [MPG]')
  plt.legend()
  plt.grid(True)
plot_loss(history)
plt.show()

【问题讨论】:

  • 单元比输入多的隐藏层的想法/目的是什么?降维通常用于减少输入并学习其表示。
  • 我对机器学习很陌生,所以我基于我看到的许多教程中的值,这些教程使用了比输入更大的单位。如果这是一个不好的做法,我绝对可以改变它

标签: python pandas tensorflow keras


【解决方案1】:

标记的数据在您的数据集中具有不平衡的值,这表明您应该使用mean_absolute_error 代替mean_squared_error 作为损失函数来防止异常值。

请检查以下代码:

model.compile(optimizer='adam', loss=tf.losses.MeanAbsoluteError())
model.summary()

history = model.fit(train_df, damage, 
                    validation_data=(test_features,test_labels), epochs=50)

输出:

Epoch 1/50
2/2 [==============================] - 1s 157ms/step - loss: 6441.7593 - val_loss: 557.6278
Epoch 2/50
2/2 [==============================] - 0s 25ms/step - loss: 3107.2041 - val_loss: 124.5852
Epoch 3/50
2/2 [==============================] - 0s 23ms/step - loss: 691.8195 - val_loss: 184.2768
Epoch 4/50
2/2 [==============================] - 0s 25ms/step - loss: 1798.2119 - val_loss: 227.4887
Epoch 5/50
2/2 [==============================] - 0s 23ms/step - loss: 1824.5497 - val_loss: 128.8613
Epoch 6/50
2/2 [==============================] - 0s 25ms/step - loss: 932.4375 - val_loss: 42.4329
Epoch 7/50
2/2 [==============================] - 0s 25ms/step - loss: 259.2417 - val_loss: 182.6768
Epoch 8/50
2/2 [==============================] - 0s 24ms/step - loss: 1117.5333 - val_loss: 201.7870
Epoch 9/50
2/2 [==============================] - 0s 25ms/step - loss: 1095.1173 - val_loss: 127.8853
Epoch 10/50
2/2 [==============================] - 0s 26ms/step - loss: 501.8740 - val_loss: 19.7388
Epoch 11/50
2/2 [==============================] - 0s 25ms/step - loss: 491.4783 - val_loss: 79.3686
Epoch 12/50
2/2 [==============================] - 0s 23ms/step - loss: 854.4465 - val_loss: 51.3743
Epoch 13/50
2/2 [==============================] - 0s 32ms/step - loss: 557.2131 - val_loss: 36.0718
Epoch 14/50
2/2 [==============================] - 0s 23ms/step - loss: 193.2844 - val_loss: 106.2673
Epoch 15/50
2/2 [==============================] - 0s 24ms/step - loss: 484.3977 - val_loss: 87.4605
Epoch 16/50
2/2 [==============================] - 0s 23ms/step - loss: 248.6864 - val_loss: 10.6933
Epoch 17/50
2/2 [==============================] - 0s 30ms/step - loss: 258.6607 - val_loss: 5.0534
Epoch 18/50
2/2 [==============================] - 0s 25ms/step - loss: 233.0990 - val_loss: 59.4999
Epoch 19/50
2/2 [==============================] - 0s 26ms/step - loss: 163.0765 - val_loss: 60.1484
Epoch 20/50
2/2 [==============================] - 0s 24ms/step - loss: 126.4094 - val_loss: 13.2526
Epoch 21/50
2/2 [==============================] - 0s 25ms/step - loss: 199.9782 - val_loss: 22.9488
Epoch 22/50
2/2 [==============================] - 0s 25ms/step - loss: 86.6382 - val_loss: 65.2929
Epoch 23/50
2/2 [==============================] - 0s 22ms/step - loss: 254.5108 - val_loss: 49.9327
Epoch 24/50
2/2 [==============================] - 0s 22ms/step - loss: 143.2182 - val_loss: 22.4049
Epoch 25/50
2/2 [==============================] - 0s 23ms/step - loss: 112.4049 - val_loss: 27.7408
Epoch 26/50
2/2 [==============================] - 0s 23ms/step - loss: 93.0935 - val_loss: 27.7562
Epoch 27/50
2/2 [==============================] - 0s 26ms/step - loss: 81.5144 - val_loss: 33.3877
Epoch 28/50
2/2 [==============================] - 0s 25ms/step - loss: 103.3168 - val_loss: 16.0266
Epoch 29/50
2/2 [==============================] - 0s 24ms/step - loss: 92.6822 - val_loss: 36.5354
Epoch 30/50
2/2 [==============================] - 0s 26ms/step - loss: 152.2932 - val_loss: 17.0311
Epoch 31/50
2/2 [==============================] - 0s 42ms/step - loss: 130.8139 - val_loss: 13.1694
Epoch 32/50
2/2 [==============================] - 0s 28ms/step - loss: 117.1033 - val_loss: 42.1248
Epoch 33/50
2/2 [==============================] - 0s 27ms/step - loss: 223.1081 - val_loss: 16.3663
Epoch 34/50
2/2 [==============================] - 0s 27ms/step - loss: 111.1975 - val_loss: 19.4117
Epoch 35/50
2/2 [==============================] - 0s 23ms/step - loss: 115.3058 - val_loss: 27.8241
Epoch 36/50
2/2 [==============================] - 0s 25ms/step - loss: 136.7203 - val_loss: 14.5968
Epoch 37/50
2/2 [==============================] - 0s 32ms/step - loss: 83.6646 - val_loss: 9.2095
Epoch 38/50
2/2 [==============================] - 0s 26ms/step - loss: 79.2361 - val_loss: 33.0810
Epoch 39/50
2/2 [==============================] - 0s 27ms/step - loss: 178.8738 - val_loss: 12.5064
Epoch 40/50
2/2 [==============================] - 0s 25ms/step - loss: 101.9219 - val_loss: 19.1697
Epoch 41/50
2/2 [==============================] - 0s 30ms/step - loss: 129.7075 - val_loss: 27.4676
Epoch 42/50
2/2 [==============================] - 0s 28ms/step - loss: 173.4398 - val_loss: 16.8747
Epoch 43/50
2/2 [==============================] - 0s 24ms/step - loss: 111.3973 - val_loss: 14.2666
Epoch 44/50
2/2 [==============================] - 0s 24ms/step - loss: 121.4132 - val_loss: 21.0757
Epoch 45/50
2/2 [==============================] - 0s 26ms/step - loss: 87.1166 - val_loss: 7.6622
Epoch 46/50
2/2 [==============================] - 0s 24ms/step - loss: 78.8476 - val_loss: 10.7935
Epoch 47/50
2/2 [==============================] - 0s 25ms/step - loss: 67.0437 - val_loss: 10.6907
Epoch 48/50
2/2 [==============================] - 0s 24ms/step - loss: 62.9260 - val_loss: 12.6297
Epoch 49/50
2/2 [==============================] - 0s 26ms/step - loss: 64.7157 - val_loss: 10.9845
Epoch 50/50
2/2 [==============================] - 0s 28ms/step - loss: 65.7271 - val_loss: 8.9248

【讨论】:

    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多