Machine learning TensorFlow-如何使用普通TensorFlow训练ANN

Machine learning TensorFlow-如何使用普通TensorFlow训练ANN,machine-learning,tensorflow,Machine Learning,Tensorflow,我是TensorFlow的新手,最近我需要在不使用TensorFlow的高级API的情况下使用它来训练ANN 但是,以下代码出现了问题: 1.为ANN定义相关参数 2.在ANN中创建每个层 3.建立张量流图 4.与会话一起运行 5.问题 运行上述代码后,我得到以下异常: Caused by op u'X', defined at: File "/Users/apple/PycharmProjects/TesTensorFlow/TrainANN/ANNTest.py", line 45, i

我是TensorFlow的新手,最近我需要在不使用TensorFlow的高级API的情况下使用它来训练ANN

但是,以下代码出现了问题:

1.为ANN定义相关参数 2.在ANN中创建每个层 3.建立张量流图 4.与会话一起运行 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"]()]]
由op u'X'引起,定义为:
文件“/Users/apple/PycharmProjects/TesTensorFlow/TrainANN/ANNTest.py”,第45行,in
X=tf.placeholder(dtype=tf.float32,shape=(无,n_输入),name='X')
文件“/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site packages/TensorFlow/python/ops/array_ops.py”,第1507行,在占位符中
名称=名称)
文件“/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site packages/TensorFlow/python/ops/gen_array_ops.py”,第1997行,在_占位符中
名称=名称)
文件“/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site packages/TensorFlow/python/framework/op_def_library.py”,第768行,在apply_op
op_def=op_def)
文件“/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site packages/TensorFlow/python/framework/ops.py”,第2336行,在create_op中
初始值=自身值。\默认值\初始值,初始值=初始值)
文件“/Users/apple/anaconda/envs/TensorFlow_GPU/lib/python2.7/site packages/TensorFlow/python/framework/ops.py”,第1228行,在__
self.\u traceback=\u extract\u stack()
InvalidArgumentError(回溯见上文):必须为带有dtype float的占位符张量“X”提供一个值
[[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,或者是一个典型的二进制分类问题。

有两个可能是错误的来源:

  • 例如,
    sample=sample。重塑([1170])
    其中
    [1170]
    是所需的形状

  • 由于
    X
    被定义为大小为
    [无,n_输入]
    的占位符,因此
    示例的形状必须与该形状匹配。e、 g.
    n_输入
    为170


  • 有两件事可能是错误的根源:

  • 例如,
    sample=sample。重塑([1170])
    其中
    [1170]
    是所需的形状

  • 由于
    X
    被定义为大小为
    [无,n_输入]
    的占位符,因此
    示例的形状必须与该形状匹配。e、 g.
    n_输入
    为170


  • samples
    samples和label的形状和类型都是python内置的'list'类型,形状为(39170)的samples和labels是(39,),一个1D listtry
    sample=sample.reforme(1170)。astype(float)
    samples的形状和类型都是python内置的'list'类型,样本形状为(39170),标签为(39,),一个1D列表尝试
    sample=sample。重塑(1170)。aType(float)
    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
    
     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()
    
    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()
    
    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"]()]]