我正在尝试运行一个非常类似于Tensorflow教程(具有我自己的数据集)的回归模型。我的数据和标签是numpy数组中的float
值,例如:
数据,变量名input_array
:
[[0.63473794 0.16736857 0.19028714 1.38746357 1.00389089 1.78771353]
[0.58772032 0.19225393 0.22888241 1.41612279 1.09661261 1.52805896]
[0.37530531 0.19501039 0.24683006 1.31084661 1.14897087 0.86286696]
[0.29121152 0.19009779 0.255342 1.16257489 1.16012728 0.1838582 ]]
标签,变量名label_array
:
[[-0.00362812]
[-0.00136054]
[-0.00181653]
[ 0.00136302]]
我的模型的构建依据:
model = keras.Sequential([
layers.Dense(64, activation=tf.nn.relu, input_shape=[len(input_array.keys())]),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mean_squared_error',
optimizer=optimizer,
metrics=['mean_absolute_error', 'mean_squared_error'])
训练功能是:
history = model.fit(
input_array, label_array,
epochs=EPOCHS, validation_split = 0.2, verbose=0,
callbacks=[cp_callback])
对于任何时期,模型都会返回:
loss mean_absolute_error ... val_mean_squared_error epoch
0 NaN NaN ... NaN 0
我不确定是由哪个非数字引起的,因为我给模型提供的所有值都是数字。
答案 0 :(得分:1)
我对代码进行了一些简化,并且可以在colab中正常运行。
from __future__ import print_function
from tensorflow.python import keras
from keras.layers import Dense, Activation
from keras.models import Sequential, Model
import numpy as np
input_array = np.array([
[0.63473794, 0.16736857, 0.19028714, 1.38746357, 1.00389089, 1.78771353],
[0.58772032, 0.19225393, 0.22888241, 1.41612279, 1.09661261, 1.52805896],
[0.37530531, 0.19501039, 0.24683006, 1.31084661, 1.14897087, 0.86286696],
[0.29121152, 0.19009779, 0.255342, 1.16257489, 1.16012728, 0.1838582 ]])
label_array = np.array([
[-0.00362812],
[-0.00136054],
[-0.00181653],
[ 0.00136302]])
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(input_array.shape[1],)))
model.add(Dense(64, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error',
optimizer='rmsprop', validation_split=0.25,
metrics=['mean_absolute_error', 'mean_squared_error'])
model.fit(input_array, label_array, epochs=100)
通常,除非有必要,否则避免混合keras和tf API很有用。我了解这并不能完全查明代码中的问题,但我希望它对您继续前进很有用。
答案 1 :(得分:0)
我自己没有遇到这个问题,并且刚刚开始使用keras。但是我已经读到其他人在不良条件数据方面遇到麻烦,并且更改优化程序可能可以解决问题。
RMSprop 1上的keras文档说,这对循环网络很有用,而在您的代码中则不是这样。