我正在使用这个例子: https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/input_fn/boston.py
使用完全相同的骨架制作测试脚本,除了我使用了UCI存储库中的数据集: https://archive.ics.uci.edu/ml/datasets/Airfoil+Self-Noise
但是我一直遇到NaN直方图错误:
InvalidArgumentError (see above for traceback): Nan in summary histogram
for: dnn/dnn/hiddenlayer_0_activation
[[Node: dnn/dnn/hiddenlayer_0_activation = HistogramSummary[T=DT_FLOAT,
_device="/job:localhost/replica:0/task:0/cpu:0"](dnn/dnn
/hiddenlayer_0_activation/tag, dnn/hiddenlayer_0/hiddenlayer_0/Relu)]]
这是代码:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import itertools
import pandas as pd
import tensorflow as tf
import numpy
#import feature_column as fc
tf.logging.set_verbosity(tf.logging.INFO)
COLUMNS = ["freq", "angle", "chord", "velocity", "thic", "snd"]
FEATURES = ["freq", "angle", "chord", "velocity", "thic"]
LABEL = "snd"
def input_fn(data_set):
feature_cols = {k: tf.constant(data_set[k].values) for k in FEATURES}
labels = tf.constant(data_set[LABEL].values)
return feature_cols, labels
def main(unused_argv):
# Load datasets
training_set = pd.read_csv("C:\\Users\\Aida\\Documents\\Visual Studio 2017\\Projects\\airfoil_train.csv", skipinitialspace=True,
skiprows=1, names=COLUMNS)
test_set = pd.read_csv("C:\\Users\\Aida\\Documents\\Visual Studio 2017\\Projects\\airfoil_test.csv", skipinitialspace=True,
skiprows=1, names=COLUMNS)
# prediction set
prediction_set = pd.read_csv("C:\\Users\\Aida\\Documents\\Visual Studio 2017\\Projects\\airfoil_predict.csv", skipinitialspace=True,
skiprows=1, names=COLUMNS)
# Feature cols
feature_cols = [tf.contrib.layers.real_valued_column(k)
for k in FEATURES]
# clip the gradients using gloal norms
#list1 =
#global_norm1 = tf.global_norm(list1)
#clipper = tf.clip_by_global_norm(list1, 1, global_norm1, name=None)
# Build 3 layer DNN with dropout
regressor = tf.contrib.learn.DNNRegressor(feature_columns=feature_cols,
hidden_units=[10, 10],
model_dir="/tmp/airfoil_model",
optimizer=tf.train.ProximalAdagradOptimizer(learning_rate=0.1, l1_regularization_strength=0.001)
)
# Fit
regressor.fit(input_fn=lambda: input_fn(training_set), steps=3000)
# Score accuracy
ev = regressor.evaluate(input_fn=lambda: input_fn(test_set), steps=1)
loss_score = ev["loss"]
print("Loss: {0:f}".format(loss_score))
# Print out predictions
y = regressor.predict_scores(input_fn=lambda: input_fn(prediction_set))
# .predict() returns an iterator; convert to a list and print predictions
predictions = list(itertools.islice(y, 10))
print("Predictions: {}".format(str(predictions)))
if __name__ == "__main__":
tf.app.run()
我试图改变优化器的学习速度,你也可以看到,我也试过渐变剪辑,但这让我陷入了一个全新的陷阱。我甚至使用不同的数据创建了另一个完整的骨架,但它给了我同样的错误。它可能是我格式化数据集的方式,但我几乎完全遵循教程格式。 (如果需要,我可以发布CSV文件格式的图像。我现在没有足够的点来放置多个链接)
我尝试了原始的教程脚本,它工作得很好。我想知道错误是什么(用外行术语)以及它为什么会发生。
编辑:问题是通过删除CSV文件中的功能名称行来解决的,这是第一行,但这仍然是关于我怎么不能放 具有功能名称的行而不会导致读取错误。
为了知识,我仍然想知道它为什么会发生以及原始错误意味着什么
答案 0 :(得分:0)
为什么要命名列?如果你需要按列特殊的方式做一些事情,你不能只使用索引吗?