【问题标题】:How can I convert this tensor to a numpy array?如何将此张量转换为 numpy 数组?
【发布时间】:2020-01-17 13:39:39
【问题描述】:

我想将 pagerank 算法应用于 x_attn 张量。但是 nx.pagerank 模块只接受 numpy 数组。当我尝试将其转换为使用 x_att.eval() 时,它说:

“tensorflow.python.framework.errors_impl.InvalidArgumentError:您必须为占位符张量'main_input_5'提供一个dtype float和shape [?,6600]的值”。

有人可以帮帮我吗?

def variable_attn_15jan():


    input_dim=input_dim_func()

    main_input = Input(shape=(input_dim,),name='main_input')

    inputs_w1=Lambda(lambda x: x[:,0:3300])(main_input)  
    inputs_w2=Lambda(lambda x: x[:,3300:6600])(main_input) 


    x1_attn= Dense(11, activation='softmax')(inputs_w1)
    x2_attn= Dense(11, activation='softmax')(inputs_w2)


    list_x_att1=[]
    list_x_att2=[]

    for i in range(11) :
        val_scalar=Lambda(lambda x: x[:,i:(i+1)])(x1_attn)
        list_x_att1.append(Lambda(lambda x: x[:,(i*300):(i+1)*300]*val_scalar)(inputs_w1))
    x_att1 = concatenate(list_x_att1)

    for i in range(11) :
        val_scalar=Lambda(lambda x: x[:,i:(i+1)])(x2_attn)
        list_x_att2.append(Lambda(lambda x: x[:,(i*300):(i+1)*300]*val_scalar)(inputs_w2))
    x_att2 = concatenate(list_x_att2)

    x_att = concatenate([x_att1,x_att2])


【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    在您的张量上 (v2.0):

    npa = tf.numpy()

    npa 将是您的 numpy 数组名称。

    或者,张量(

    npa=tf.eval()
    print(type(npa))
    

    更新 1:

    使用下面的代码来检查你有什么类型的数组。另请参阅 rkern 的评论,评论于 2019 年 7 月 14 日在here 发布。

    type(tf)
    
    type(np.array(tf))
    

    【讨论】:

    • 什么版本的张量?另外..看看你通过x_attn喂什么tf到.numpy()。
    • 1.14(这是我需要使用的版本。)这是我得到的错误。 AttributeError:“张量”对象没有属性“numpy”
    • .numpy() 适用于 2.0 版。然后在您的情况下,在转换之前查看数组形状。
    • 你知道我如何在 1.14 中做到这一点吗?
    • 试试print(type(tf.Session().run(tf.constant([1,2,3]))))看看它是否是一个numpy。
    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 2021-10-17
    • 2018-11-28
    • 2019-06-13
    • 2019-03-19
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多