我對tensorflow相對較新,但即使經過大量的研究,我也無法找到某些變量含義的文檔。tf.contrib.learn.DNNClassifier提取的權重和偏差的含義和維數
對於我目前的項目,我想借助tensorflow來訓練一個DNN,然後我想從中提取權重和偏差矩陣,以便在另一個應用OUTSIDE tensorflow中使用它。對於第一次嘗試,我建立了一個具有[4,10,2]結構的簡單網絡,其預測了二元結果。
我用3個real_valued_columns和單個sparse_column_with_keys(包裝在一個embedding_column)作爲特徵:
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。除了關於已棄用的「標量總結」功能的一些警告,它成功運行併產生了合理的結果。我打印模型的所有變量,通過使用下面的行:
var = {k: estimator.get_variable_value(k) for k in estimator.get_variable_names())
我有望獲得大小10x4和2×10的權重矩陣,以及10×尺寸和2×1的偏壓矩陣。但我得到了以下內容:
'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優化器,儘管從未指定它?
任何幫助,高度讚賞!
謝謝!我意識到我在嵌入列中設置了dimension = 8。這解決了我的問題與奇數維度。 – DocDriven