【发布时间】:2019-06-07 18:28:37
【问题描述】:
将 Tensorflow 数据集传递给 Keras 的 model.fit 函数时,获取与形状相关的 ValueError。
我的数据集的 X_train 有形状(100 个样本 x 62 个特征),Y_train 是(100 个样本 x 1 个标签)
下面的可重现代码:
import numpy as np
from tensorflow.keras import layers, Sequential, optimizers
from tensorflow.data import Dataset
num_samples = 100
num_features = 62
num_labels = 1
batch_size = 32
steps_per_epoch = int(num_samples/batch_size)
X_train = np.random.rand(num_samples,num_features)
Y_train = np.random.rand(num_samples, num_labels)
final_dataset = Dataset.from_tensor_slices((X_train, Y_train))
model = Sequential()
model.add(layers.Dense(256, activation='relu',input_shape=(num_features,)))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(num_labels, activation='softmax'))
model.compile(optimizer=optimizers.Adam(0.001), loss='categorical_crossentropy',metrics=['accuracy'])
history = model.fit(final_dataset,epochs=10,batch_size=batch_size,steps_per_epoch = steps_per_epoch)
错误是:
ValueError: Error when checking input: expected dense_input to have shape (62,) but got array with shape (1,)
为什么dense_input 得到一个形状为(1,) 的数组?我清楚地传递了一个 X_train 形状 (n_samples, n_features)。
有趣的是,如果我将批处理(某个数字)函数应用于数据集,错误就会消失,但似乎我遗漏了一些东西。
【问题讨论】:
标签: tensorflow keras tensorflow-datasets