张量流模型.拟合()返回带有所有浮点输入的NaN

2024-04-25 07:03:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行一个回归模型,它非常类似于Tensorflow教程(使用我自己的数据集)。我的数据和标签是numpy数组中的float值,例如:

数据,varnameinput_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 ]]

标签,varnamelabel_array

^{pr2}$

我的模型是用以下组件构建的:

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

我不确定是什么非数字导致了这个问题,因为我给模型的所有值都是数字。在


Tags: 数据模型inputmodellayerstferror标签
2条回答

我自己没有这个问题,刚开始使用keras。但是我读到过其他人在处理坏的条件数据时遇到了麻烦,而且更改优化器可能会解决问题。在

RMSprop1上的keras文档指出,它对递归网络很好,而在代码中则不是这样。在

我把代码简化了一点,它在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和tfapi是很有用的,除非需要这样做。我明白这并不是你的代码的问题所在,但我希望它能对你有所帮助。在

相关问题 更多 >