Python 第一个隐藏层的Tensorflow直方图错误
我举的例子是: 要使用完全相同的框架生成测试脚本,除了我使用了UCI存储库中的数据集外: 但是,我一直遇到一个错误:Python 第一个隐藏层的Tensorflow直方图错误,python,machine-learning,tensorflow,neural-network,Python,Machine Learning,Tensorflow,Neural Network,我举的例子是: 要使用完全相同的框架生成测试脚本,除了我使用了UCI存储库中的数据集外: 但是,我一直遇到一个错误: 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, _devic
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文件中的要素名称行(这是第一行),问题得以解决,但这仍然与我无法放置的方式有关
具有要素名称且不会导致读取错误的行
为了了解情况,我仍然想知道为什么会发生这种情况,以及原始错误的含义为什么要命名列?如果你需要做一些特殊的列操作,你不能只使用索引吗?功能列不是基本上对文件进行索引吗?据我所知,名为“featurecols”的元组是通过计算feature列表中的每个唯一名称并在元组中为每个名称创建一个元素来创建的。