(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()
X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0
X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0
y_train = y_train.astype(np.int32)
y_test = y_test.astype(np.int32)
X_valid, X_train = X_train[:5000], X_train[5000:]
y_valid, y_train = y_train[:5000], y_train[5000:]
dnn_clf = tf.estimator.DNNClassifier(hidden_units=[300,100], n_classes=10,
feature_columns=feature_cols)
input_fn = tf.estimator.inputs.numpy_input_fn(
x={"X": X_train}, y=y_train, num_epochs=40, batch_size=50, shuffle=True)
dnn_clf.train(input_fn=input_fn)
我的问题是: 之间有什么区别
x={"X": X_train}, y=y_train, num_epochs=40, batch_size=50, shuffle=True)
和
x=X_train, y=y_train, num_epochs=40, batch_size=50, shuffle=True)
为什么我不能仅使用列表 X_train
作为输入x
,而必须将X_train
转换为词典 x={"X": X_train}
为什么我不需要为y
做同样的事情?
答案 0 :(得分:0)
根据numpy_input_fn的TensorFlow 1.11文档,您可以使用两种方法。但是我已经在TensorFlow 1.9上对其进行了测试,但是它没有用。因此,似乎此功能是在以后添加的。
据我了解,另一个问题是“为什么x参数是一个映射而y只是一个数组”。问题是模型可以具有多个输入要素列/张量,但输出张量只能是一个。至少对于标准估计器和一般用例而言,这是正确的。因此,您需要以某种方式指定多个输入,而最简单的方法就是传递地图。