python - 当输出正常时,Tensorflow 总是给我相同的结果
问题描述
我希望你今天过得愉快!
我最近尝试使用 TensorFlow 训练回归模型,并按照此处的说明完成了我的代码。
data = pd.read_csv('regret.csv')
max_regret = data['regret'].max()
data['regret'] = data['regret'] / max_regret # Normalize Regrets
regret_labels = data.pop('regret')
def build_model():
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=[len(data.keys())]),
layers.Dense(64, activation='relu'),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae', 'mse'])
return model
model = build_model()
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 100 == 0: print('')
print('.', end='')
EPOCHS = 1000
# early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=100)
history = model.fit(
data, regret_labels,
epochs=EPOCHS, validation_split=0.2, verbose=0,
callbacks=[PrintDot()])
test = model.predict(data)
loss, mae, mse = model.evaluate(data, regret_labels, verbose=2)
但是,我遇到了一个问题,即所有预测都是相同的,即使 model.evaluate() 通过试验给了我不同的统计数据。
我还通过此链接附加了文件。
你能看看它并给我一些解决它的想法吗?提前致谢!
解决方案
您可以尝试以下方法,在适合模型之前将您的数据集拆分为训练集和测试集。您可以尝试以下方法,在适合模型之前将您的数据集拆分为训练集和测试集。
import pandas as pd
import keras
from keras.models import Sequential
from keras.layers.core import Dense
from keras.optimizers import RMSprop
data = pd.read_csv('regret.csv')
max_regret = data['regret'].max()
data['regret'] = data['regret'] / max_regret
len(data.keys())
data
train_dataset = data.sample(frac=0.8,random_state=0)
test_dataset = data.drop(train_dataset.index)
train_labels = train_dataset.pop('regret')
test_labels = test_dataset.pop('regret')
def build_model():
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(27,)))
model.add(Dense(64, activation='relu'))
model.add(Dense(1))
optimizer = RMSprop(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae', 'mse'])
return model
model = build_model()
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 100 == 0: print('')
print('.', end='')
EPOCHS = 1000
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=100)
history = model.fit(
train_dataset, train_labels,
epochs=EPOCHS, validation_split=0.2, verbose=0,
callbacks=[PrintDot()])
test = model.predict(test_dataset)
结果略有变化,如下所示: 在此处输入图像描述
您可以做得更好的是最小最大缩放所有属性。
希望它可以帮助你。
推荐阅读
- python - 当我尝试安装面部识别库时,这里发生了什么?
- python - 如何计算正则表达式字符串中的所有匹配项python 3
- c# - 两个 ADO 模型,如何有条件地选择其中一个
- java - 如何使用 IntelliJ 中的相对路径从外部库中引用 jar 文件?
- javascript - 如何将播放暂停功能添加到网页的动态元素
- google-chrome-extension - 下载的 Chrome 扩展不能总是指定文件扩展名?
- opencv - OpenCV如何抓取实时帧而不是下一帧?
- mysql - 在 SQL 查询中查找组中较旧的记录
- netlogo - Netlogo - 如何确定一个乌龟强度转向?(标题)
- sql - 从运行总计 (SQL) 雪花中排除某些记录