python - 在 Tensorflow 中获取未知张量的形状

标签 python machine-learning tensorflow neural-network

我正在尝试为 OpenAI 健身房实现简单的 Q-Network。我有状态占位符。状态以整数表示。我想要一个单热向量。所以,我这样做:

input_state = tf.placeholder(tf.int64, shape=(None))
state_oh = tf.one_hot(input_state, env.observation_space.n)

我正在使用(None )除了()因为我想将批处理传递给训练网络。

我预计,state_oh形状如(None, 16) ,但我得到了 <unknown> 。这对我来说是一个问题,因为我实现了创建全连接层的函数,它使用 tensor.shape 确定输入张量的形状。 :

def dense(x, output_size, activation, name=None):  
with tf.name_scope(name, "dense", [x]):       

    w = tf.Variable(tf.random_normal([input_size, output_size]), name="w")
    b = tf.Variable(tf.random_normal([1, output_size]), name="b")
    layer = tf.matmul(x, w) + b
    layer_act = activation(layer)

    return layer_act

这不适用于 <unknown>形状。

如何将一批整数传递给 Tensorflow 并获取它的第二维(one-hot 向量的长度)?我不想将输入的大小传递给 dense()明确地。

最佳答案

我发现,如果我像这样定义占位符:

input_state = tf.placeholder(tf.int64, shape=[None], name="input_state")

我犯了一个非常愚蠢的错误。正确的形状是 [None] 而不是 (None),因为 (None) 相当于 None,这意味着“任何形状”。

如果占位符的形状正确,state_oh 的形状将如预期的那样为 (?, 16)

关于python - 在 Tensorflow 中获取未知张量的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379246/

相关文章:

python - 当输入为 json 时,保存模型的最佳方式是什么?

python - 如何使用 View (numpy)将二维数组转换为结构化数组?

python - 从 django 数据库加载图像文件路径时出错

python - 具有标准 Tensorflow 的 Tensorflow Lite 模型

c++ - undefined symbol 'fixed_address_empty_string' : new tensorflow op with protobuf

python - Django React Nginx 服务管理静态文件

python - 最近质心的决策边界

machine-learning - 使用tiny-dnn 训练 CNN 获取 NIST 数字

python - Google colab 中的时态数据存储在哪里?

python - 如何将图像转换为 .tflite 输入