Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf.contrib.learn.DNNClassifier'的含义和维度;s提取的权重和偏差_Tensorflow - Fatal编程技术网

Tensorflow tf.contrib.learn.DNNClassifier'的含义和维度;s提取的权重和偏差

Tensorflow tf.contrib.learn.DNNClassifier'的含义和维度;s提取的权重和偏差,tensorflow,Tensorflow,我对tensorflow比较陌生,但即使进行了大量研究,我也无法找到关于某些变量含义的文档 对于我当前的项目,我想在tensorflow的帮助下训练DNN,然后我想从中提取权重和偏差矩阵,以便在tensorflow之外的另一个应用程序中使用它。在第一次尝试中,我建立了一个具有[4,10,2]结构的简单网络,它预测一个二进制结果 我使用了3个实值列和一个带有键的稀疏列作为特征: def build_estimator(optimizer=None, activation_fn=tf.sigmoid

我对tensorflow比较陌生,但即使进行了大量研究,我也无法找到关于某些变量含义的文档

对于我当前的项目,我想在tensorflow的帮助下训练DNN,然后我想从中提取权重和偏差矩阵,以便在tensorflow之外的另一个应用程序中使用它。在第一次尝试中,我建立了一个具有[4,10,2]结构的简单网络,它预测一个二进制结果

我使用了3个实值列和一个带有键的稀疏列作为特征:

def build_estimator(optimizer=None, activation_fn=tf.sigmoid):
    """Build an estimator"""
    # Sparse base columns
    column_stay_point = tf.contrib.layers.sparse_column_with_keys(
        column_name='stay_point',
        keys=['no', 'yes'])

    # Continuous base columns
    column_heading = tf.contrib.layers.real_valued_column('heading')
    column_velocity = tf.contrib.layers.real_valued_column('velocity')
    column_acceleration = tf.contrib.layers.real_valued_column('acceleration')

    pedestrian_feature_columns = [column_heading, 
                                  column_velocity, 
                                  column_acceleration,
                                  tf.contrib.layers.embedding_column(
                                      column_stay_point, 
                                      dimension=8, 
                                      initializer=tf.truncated_normal_initializer)]

    # Create classifier
    estimator = tf.contrib.learn.DNNClassifier(
        hidden_units=[10],
        feature_columns=pedestrian_feature_columns,
        model_dir='./tmp/pedestrian_model',
        n_classes=2,
        optimizer=optimizer,
        activation_fn=activation_fn)

    return estimator
我用默认参数调用了这个函数,并使用estimator.fit(…)来训练DNN。除了一些关于不推荐使用的“scalar_summary”函数的警告外,它成功运行并产生了合理的结果。我使用以下行打印了模型的所有变量:

var = {k: estimator.get_variable_value(k) for k in estimator.get_variable_names())
我希望得到大小为10x4和2x10的权重矩阵,以及大小为10x1和2x1的偏差矩阵。但我得到了以下信息:

'dnn/binary_logistic_head/dnn/learning_rate': 0.05 (actual value, scalar)

'dnn/input_from_feature_columns/stay_point_embedding/weights': 2x8 array

'dnn/hiddenlayer_0/weights/hiddenlayer_0/weights/part_0/Adagrad': 11x10 array

'dnn/input_from_feature_columns/stay_point_embedding/weights/int_embedding/weights/part_0/Adagrad': 2x8 array

'dnn/hiddenlayer_0/weights': 11x10 array

'dnn/logits/biases': 1x1' array

'dnn/logits/weights/nn/dnn/logits/weights/part_0/Adagrad': 10x1 array

'dnn/logits/weights': 10x1 array

'dnn/logits/biases/dnn/dnn/logits/biases/part_0/Adagrad': 1x1 array

'global_step': 5800, (actual value, scalar)

'dnn/hiddenlayer_0/biases': 1x10 array

'dnn/hiddenlayer_0/biases//hiddenlayer_0/biases/part_0/Adagrad': 1x10 array
有没有文件证明这些神秘的名字是什么意思?为什么矩阵有这些奇怪的维度?另外,为什么尽管从未指定Adagrad优化器,但仍有对它的引用


非常感谢您的帮助

网络中的输入节点数是11,而不是4 8(嵌入列)+列标题(1),列速度(1),列加速度(1)=11

根据变量名,输出是一个二进制逻辑节点,因此输出节点的数量只有一个而不是两个

以下是您感兴趣的权重/偏差

dnn/hiddenlayer_0/weights':11x10数组-->存在从输入到隐藏节点的权重

dnn/hiddenlayer_0/偏差:1x10数组-->隐藏节点的偏差

dnn/logits/weights':10x1数组-->从隐藏节点到输出节点的权重

dnn/logits/biases:输出节点的1x1数组-->偏差

为什么在从未指定Adagrad优化器的情况下仍会引用它?

最有可能的默认优化器是AdaGrad。

谢谢!我意识到我在嵌入列中设置了dimension=8。这就解决了我的奇数维问题。