python - ValueError:没有为“dense_input”提供数据
问题描述
我正在使用以下简单代码使用 tensorflow 加载 csv 并使用 keras 执行建模...
无法判断这个错误!
import tensorflow as tf
train_dataset_fp = tf.keras.utils.get_file(fname=file_path, origin=URL)
columns = ["X","Y"]
features = columns[:-1]
labels = columns[-1]
batch_size = 32
train_dataset = tf.data.experimental.make_csv_dataset(
train_dataset_fp,
batch_size,
column_names = columns,
label_name= labels,
num_epochs=1
)
data_iterator = train_dataset.make_one_shot_iterator()
X_train, Y_train = data_iterator.get_next()
from tensorflow import keras
model = keras.Sequential([
keras.layers.Dense(10, input_shape=[len(X_train)]),
keras.layers.Dense(1)
])
model.compile(loss='mse',
optimizer='adam',
metrics=['mae', 'mse'])
model.summary()
model.fit(X_train, Y_train, epochs=1000, steps_per_epoch=batch_size)
虽然其余代码工作正常,但我无法弄清楚为什么我会收到密集的输入错误。
如果使用 pandas,相同的代码可以完美运行,我试图删除对其他库的依赖,因此使用 tensorflow 组件,但似乎失败了。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10) 30
_________________________________________________________________
dense_1 (Dense) (None, 1) 11
=================================================================
Total params: 41
Trainable params: 41
Non-trainable params: 0
_________________________________________________________________
Traceback (most recent call last):
File "/Users/abhinavasrivastava/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py", line 267, in standardize_input_data
for x in names
File "/Users/abhinavasrivastava/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py", line 267, in <listcomp>
for x in names
KeyError: 'dense_input'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "simple_linear_keras.py", line 47, in <module>
model.fit(X_train, Y_train, epochs=1000, callbacks=[tb], steps_per_epoch=batch_size)
File "/Users/abhinavasrivastava/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1536, in fit
validation_split=validation_split)
File "/Users/abhinavasrivastava/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 992, in _standardize_user_data
class_weight, batch_size)
File "/Users/abhinavasrivastava/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1117, in _standardize_weights
exception_prefix='input')
File "/Users/abhinavasrivastava/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py", line 271, in standardize_input_data
'for each key in: ' + str(names))
ValueError: No data provided for "dense_input". Need data for each key in: ['dense_input']
解决方案
该错误No data provided for "dense_input"
意味着 Keras 根本没有获取输入数据或没有以预期的格式获取输入数据,即以数组的形式,在 Python 中表示 numpy 数组。
假设其他一切正常,只需添加一行来转换 X_train 和 Y_train 应该会有所帮助:
import numpy as np
X_train = np.array(X_train)
Y_train = np.array(Y_train)
推荐阅读
- python - TypeError:预期的 str、bytes 或 os.PathLike 对象,而不是 Django 中的 JpegImageFile(或 PngImageFile)
- android - Android,Contacts Contract:存储和检索自定义数据
- node.js - 从 Watson Assistant 获取 turn_count
- javascript - 这个开玩笑的测试设置有什么问题?
- javascript - 如何在 JSDoc 和 TypeScript 中编写原型的参数类型?
- python - 如果用户提供相同的输入超过 X 时间打印一些东西
- swift - 如何防止浮动调色板窗口被视为文档
- r - 从光栅砖创建的数据框太大并且很多零值
- reactjs - 如何在 React 应用程序中重新渲染 Uppy 实例时保留我已经上传的图像的图像预览
- android - 谷歌云平台和 Firebase 存储有什么联系?