【问题标题】:TypeError: 'Tensor' object does not support item assignmentTypeError:“张量”对象不支持项目分配
【发布时间】:2017-01-17 21:32:43
【问题描述】:
output = tf.zeros(shape=[2, len(wss), 3, 2*d])
for i, atten_embed in enumerate(atten_embeds):
    for j, ws in enumerate(wss):
        conv_layer = conv_layers_A[j]
        conv = conv_layer(atten_embed)
        new_shape = (reduce(lambda x,y:x*y, conv.get_shape()[:-1]).value,num_filters)
        conv = K.reshape(conv, new_shape)
        for k, pooling in enumerate([K.max, K.min, K.mean]):
            print output[i,j,k,:]
            output[i,j,k,:] = pooling(conv, 0)

---> 15 个输出[i,j,k,:] = pooling(conv, 0)

TypeError: 'Tensor' 对象不支持项目分配

在我上面实现的代码中,每个pooling(conv, 0) 都返回一个Tensor("Squeeze_2:0", shape=(8,), dtype=float32) ,我应该如何将这些张量打包成一个更大的张量,形状我在output 中定义?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:
    output = []
    for i, atten_embed in enumerate(atten_embeds):
        for j, ws in enumerate(wss):
            conv_layer = conv_layers_A[j]
            conv = conv_layer(atten_embed)
            new_shape = (reduce(lambda x,y:x*y, conv.get_shape()[:-1]).value,num_filters)
            conv = K.reshape(conv, new_shape)
            for k, pooling in enumerate([K.max, K.min, K.mean]):
                output.append(pooling(conv, 0))
    
    output = tf.reshape(tf.pack(output), shape=(2, len(wss), 3, num_filters))
    

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 2016-07-31
      • 2014-02-18
      • 2017-03-26
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      相关资源
      最近更新 更多