1
我是TensorFlow的新人,最近我需要使用它來訓練ANN,而無需使用TensorFlow的高級API。TensorFlow - 如何使用Plain TensorFlow訓練ANN
但是,出事了用下面的代碼:
1.定義相關參數爲安
n_inputs = getVectorLength(instance2Path)
n_outputs = 1
n_hidden1 = 66
n_hidden2 = 24
learning_rate = 0.01
n_epochs = 400
batch_size = 50
2. ANN
創建的每一個層def neuron_layer(X, n_neurons, name, activation=None):
with tf.name_scope(name):
n_inputs = int(X.get_shape()[1])
stddevValue = 2/np.sqrt(n_inputs)
initWeight = tf.truncated_normal((n_inputs, n_neurons), stddev=stddevValue)
W = tf.Variable(initWeight, name='weights', dtype='float')
b = tf.Variable(tf.zeros([n_neurons]), name='biases')
z = tf.matmul(X, W) + b
if activation == 'relu':
return tf.nn.relu(z)
elif name == 'outputs':
return tf.sigmoid(z)
pass
pass
3.生成TensorFlow圖表
X = tf.placeholder(dtype=tf.float32, shape=(None, n_inputs), name='X')
y = tf.placeholder(dtype=tf.float32, shape=(None), name='y')
hidden1 = neuron_layer(X, n_hidden1, 'hidden1', activation='relu')
hidden2 = neuron_layer(hidden1, n_hidden2, 'hidden2', activation='relu')
outputs = neuron_layer(hidden2, n_outputs, 'outputs')
init = tf.global_variables_initializer()
4.運行與會話
with tf.Session() as sess:
print n_inputs
sess.run(init)
samples, labels = prepareSampleAndLabelAndFeature(ConfigVars.FeatureSelectionStrategy2, instance2Path)
sample = np.array(samples[0])
sample = sample.reshape(1, 170)
sess.run(outputs, feed_dict={X: sample})
print outputs.eval()
5.問題
運行上面的代碼後,我得到了以下情況除外:
Caused by op u'X', defined at:
File "/Users/apple/PycharmProjects/TesTensorFlow/TrainANN/ANNTest.py", line 45, in <module>
X = tf.placeholder(dtype=tf.float32, shape=(None, n_inputs), name='X')
File "/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py", line 1507, in placeholder
name=name)
File "/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1997, in _placeholder
name=name)
File "/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 768, in apply_op
op_def=op_def)
File "/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2336, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1228, in __init__
self._traceback = _extract_stack()
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'X' with dtype float
[[Node: X = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
在我看來,也許問題上的數據類型計數的X,但我已檢查! X的輸入向量類似於[0,1,0,1 .....],只包含0-1個值,標號爲0和1,或者是典型的二進制分類問題。
什麼的'samples' –
樣品的形狀和類型和標籤都是蟒蛇內置的「列表」類型,在(39170)形狀的樣品和標籤是(39),一1D list – FrankRong
嘗試'sample = sample.reshape(1,170).astype(float)' –