如何将形状(36,)的张量转换为(1,36)

时间:2019-10-25 09:40:56

标签: python numpy tensorflow

我还不熟悉numpy,希望有人可以帮助我。

代码是:

x = tf.placeholder(tf.float32 , [1 , 36])
# L is a list from a list of lists.
sess.run(rnn_model , {x : L})

错误是:

ValueError: Cannot feed value of shape (36,) for Tensor 'Placeholder:0', which has shape '(1, 36)'

我认为这是因为L是2D列表中的列表,python认为L必须是列列表。

如何解决该错误?

3 个答案:

答案 0 :(得分:0)

您可以使用numpy重塑list L的形状,然后使用tf.convert_to_tensor()

示例

import numpy as np
import tensorflow as tf
print(tf.__version__)
print(np.__version__)

L = [i for i in range(36)]
La = np.array(L).reshape((1,len(L))).astype(np.float32)
Lt = tf.convert_to_tensor(La)
print(y)

输出

1.15.0
1.17.3
Tensor("Const_7:0", shape=(1, 36), dtype=float32)

答案 1 :(得分:0)

您可以使用np.expand_dims()将列表转换为列向量,如下所示:

sess.run(rnn_model , {x : np.expand_dims(L, axis=0)})

答案 2 :(得分:0)

您可以通过在所需位置使用“无”来使用花式索引来添加尺寸为1的额外尺寸。

FROM ubuntu:18.04

# Upgrade installed packages
RUN apt-get update && apt-get upgrade -y && apt-get clean

# (...)

# Python package management and basic dependencies
RUN apt-get install -y curl python3.7 python3.7-dev python3.7-distutils

# Register the version in alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1

# Set python 3 as the default python
RUN update-alternatives --set python /usr/bin/python3.7

# Upgrade pip to latest version
RUN curl -s https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
    python get-pip.py --force-reinstall && \
    rm get-pip.py


# (...)

L[None, :]

如果L不是ndarray。