Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow为什么我的ANN模型没有学习_Python_Tensorflow_Deep Learning - Fatal编程技术网

Python Tensorflow为什么我的ANN模型没有学习

Python Tensorflow为什么我的ANN模型没有学习,python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,以下是我最基本的ANN代码: import tensorflow as tf from tensorflow.keras.layers import Dense from tensorflow.keras import Sequential import pandas as pd import numpy as np from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt from

以下是我最基本的ANN代码:

import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Sequential
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler,normalize

data = pd.read_csv("home_data.csv")
x = data.drop(['id', 'date', 'price'], axis=1).values
y = data['price'].values

x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.33)

model = Sequential()
model.add(Dense(18, input_shape=(18,), activation="sigmoid"))
model.add(Dense(36, input_shape=(18,), activation="sigmoid"))
model.add(Dense(1, input_shape=(18,), activation="sigmoid"))
model.compile(optimizer='sgd', loss='mean_squared_error')
r = model.fit(x_train, y_train, validation_data=(x_test,y_test), epochs=50)
plt.plot(r.history['loss'], label="loss")
plt.plot(r.history['val_loss'], label="val_loss")
plt.show()
然而,我的损失非常高——大约426470263086——而且从未随时间而减少。这是我的损失图

更新

这是我试图处理的部分数据

           id             date     price  bedrooms  ...      lat     long  sqft_living15  sqft_lot15
0  7129300520  20141013T000000  221900.0         3  ...  47.5112 -122.257           1340        5650
1  6414100192  20141209T000000  538000.0         3  ...  47.7210 -122.319           1690        7639
2  5631500400  20150225T000000  180000.0         2  ...  47.7379 -122.233           2720        8062
3  2487200875  20141209T000000  604000.0         4  ...  47.5208 -122.393           1360        5000
4  1954400510  20150218T000000  510000.0         3  ...  47.6168 -122.045           1800        7503

[5 rows x 21 columns]

看起来您正在尝试预测连续值。当预测连续值时,您在最后一层中的激活应该是线性的,或者泄漏relu(如果预测值为正值),否则不激活

import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Sequential
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler,normalize

data = pd.read_csv("home_data.csv")
x = data.drop(['id','price' ,'date'], axis=1).values
y = data['price'].values

x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.33)

scaler = StandardScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

model = Sequential()
model.add(Dense(12, input_shape=(18,), activation="relu"))
model.add(Dense(6, activation="relu"))
model.add(Dense(1, activation="linear"))
model.compile(optimizer='sgd', loss='mean_squared_error', metrics = [tf.keras.metrics.RootMeanSquaredError()])
r = model.fit(x_train, y_train, validation_data=(x_test,y_test), epochs=10)

plt.plot(r.history['loss'], label="loss")
plt.plot(r.history['val_loss'], label="val_loss")
plt.show()
不必为隐藏层指定输入形状

模型的计算损失非常高,因为数据集中的最小值和最大值变化很大

使用标准定标器后,损失减少

输出:

Epoch 1/10
453/453 [==============================] - 1s 3ms/step - loss: 6093344963084377128960.0000 - root_mean_squared_error: 78059880448.0000 - val_loss: 9416156905472.0000 - val_root_mean_squared_error: 3068575.7500
Epoch 2/10
453/453 [==============================] - 1s 3ms/step - loss: 639826591744.0000 - root_mean_squared_error: 799891.6250 - val_loss: 155623915520.0000 - val_root_mean_squared_error: 394491.9688
Epoch 3/10
453/453 [==============================] - 1s 2ms/step - loss: 124726026240.0000 - root_mean_squared_error: 353165.7188 - val_loss: 155318534144.0000 - val_root_mean_squared_error: 394104.7188
Epoch 4/10
453/453 [==============================] - 1s 3ms/step - loss: 124705193984.0000 - root_mean_squared_error: 353136.2188 - val_loss: 155418017792.0000 - val_root_mean_squared_error: 394230.9062
Epoch 5/10
453/453 [==============================] - 1s 3ms/step - loss: 124720766976.0000 - root_mean_squared_error: 353158.2812 - val_loss: 155389984768.0000 - val_root_mean_squared_error: 394195.3750
Epoch 6/10
453/453 [==============================] - 1s 3ms/step - loss: 124696051712.0000 - root_mean_squared_error: 353123.2812 - val_loss: 155291697152.0000 - val_root_mean_squared_error: 394070.6875
Epoch 7/10
453/453 [==============================] - 1s 3ms/step - loss: 124681125888.0000 - root_mean_squared_error: 353102.1562 - val_loss: 155307376640.0000 - val_root_mean_squared_error: 394090.5625
Epoch 8/10
453/453 [==============================] - 1s 3ms/step - loss: 124710920192.0000 - root_mean_squared_error: 353144.3438 - val_loss: 155327266816.0000 - val_root_mean_squared_error: 394115.8125
Epoch 9/10
453/453 [==============================] - 1s 3ms/step - loss: 124708052992.0000 - root_mean_squared_error: 353140.2812 - val_loss: 155288338432.0000 - val_root_mean_squared_error: 394066.4062
Epoch 10/10
453/453 [==============================] - 1s 3ms/step - loss: 124725968896.0000 - root_mean_squared_error: 353165.6250 - val_loss: 155315683328.0000 - val_root_mean_squared_error: 394101.0938

我试图运行您的代码,但它引发了错误未知度量函数:root_mean_squared_error加上,我的数据是房价数据,所以我认为它必须是离散的。这不是时间的问题。只是有房子的特征和它们的价格。房价可以取0到无穷大的任何值,所以它们属于连续数据范畴。我已经更新了代码,所以我认为这应该有效。啊,谢谢,但仍然丢失的是非常高的,它大约是132903206961.7856和常数。。。永不递减你能更新你的问题来显示你用来训练模型的一些数据吗?我现在做了,我的kaggle来源也补充道