将字典馈送到张量流函数时,我得到为什么我得到类型错误:不可哈希类型:'numpy.ndarray'



我正在进行张量Flow Coursera课程,我不明白为什么我会感到不匹配。

这是我定义的功能:

def one_hot_matrix(labels, C):
    """
    Creates a matrix where the i-th row corresponds to the ith class number and the jth column
                     corresponds to the jth training example. So if example j had a label i. Then entry (i,j) 
                     will be 1. 
Arguments:
labels -- vector containing the labels 
C -- number of classes, the depth of the one hot dimension
Returns: 
one_hot -- one hot matrix
"""
### START CODE HERE ###
# Create a tf.constant equal to C (depth), name it 'C'. (approx. 1 line)
C = tf.constant(C, name="C")
#labels =tf.placeholder(labels, name="labels")
# Use tf.one_hot, be careful with the axis (approx. 1 line)
one_hot_matrix = tf.one_hot(indices=labels, depth=C, axis=0)
# Create the session (approx. 1 line)
sess = tf.Session()
# Run the session (approx. 1 line)
one_hot = sess.run(one_hot_matrix, feed_dict={labels:labels, C:C})
# Close the session (approx. 1 line). See method 1 above.
sess.close()
### END CODE HERE ###
return one_hot

运行时:

labels = np.array([1,2,3,0,2,1])
one_hot = one_hot_matrix(labels, C = 4)
print ("one_hot = " + str(one_hot))

我得到此类型错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-113-2b9d0290645f> in <module>()
      1 labels = np.array([1,2,3,0,2,1])
----> 2 one_hot = one_hot_matrix(labels, C = 4)
      3 print ("one_hot = " + str(one_hot))
<ipython-input-112-f9f17c86d0ba> in one_hot_matrix(labels, C)
     28 
     29     # Run the session (approx. 1 line)
---> 30     one_hot = sess.run(one_hot_matrix, feed_dict={labels:labels, C:C})
     31 
     32     # Close the session (approx. 1 line). See method 1 above.
TypeError: unhashable type: 'numpy.ndarray'ter code here

我检查了tf.one_hot的TensorFlow文档,NP.Arrays不应该有问题。

https://www.tensorflow.org/api_docs/python/tf/one_hot

labelsC是图形定义期间的常数。因此,在调用sess.run()时,您无需再次喂食它们。我只是将行稍微更改为 one_hot = sess.run(one_hot_matrix1),现在应该工作。

def one_hot_matrix(labels, C):
    """
    Creates a matrix where the i-th row corresponds to the ith class number and the jth column
                     corresponds to the jth training example. So if example j had a label i. Then entry (i,j) 
                     will be 1. 
    Arguments:
    labels -- vector containing the labels 
    C -- number of classes, the depth of the one hot dimension
    Returns: 
    one_hot -- one hot matrix
    """
    ### START CODE HERE ###
    # Create a tf.constant equal to C (depth), name it 'C'. (approx. 1 line)
    C = tf.constant(C, name="C")
    #labels =tf.placeholder(labels, name="labels")
    # Use tf.one_hot, be careful with the axis (approx. 1 line)
    one_hot_matrix1 = tf.one_hot(indices=labels, depth=C, axis=0)
    # Create the session (approx. 1 line)
    sess = tf.Session()
    # Run the session (approx. 1 line)
    one_hot = sess.run(one_hot_matrix1) #, feed_dict={labels:labels, C:C}
    # Close the session (approx. 1 line). See method 1 above.
    sess.close()
    ### END CODE HERE ###
    return one_hot

运行:

labels = np.array([1,2,3,0,2,1])
one_hot = one_hot_matrix(labels, C = 4)
print ("one_hot = " + str(one_hot))

输出:

one_hot = [[ 0.  0.  0.  1.  0.  0.]
 [ 1.  0.  0.  0.  0.  1.]
 [ 0.  1.  0.  0.  1.  0.]
 [ 0.  0.  1.  0.  0.  0.]]

相关内容

最新更新