Tensorflow 带嵌入的RNN

Tensorflow 带嵌入的RNN,tensorflow,embedding,Tensorflow,Embedding,在方法论的基础上,我尝试建立带有分类变量和连续变量的RNN模型 连续占位符的格式如下: x = tf.placeholder(tf.float32, [None,num_steps, input_size], name="input_x")` And the categorical data placeholder is in this form: store, v_store = len(np.unique(data_df.Store.values)), 50 z_store = tf.

在方法论的基础上,我尝试建立带有分类变量和连续变量的RNN模型

连续占位符的格式如下:

x = tf.placeholder(tf.float32, [None,num_steps, input_size], name="input_x")`

And the categorical data placeholder is in this form:

store, v_store = len(np.unique(data_df.Store.values)), 50

z_store = tf.placeholder(tf.int32, [None, num_steps], name='Store')

emb_store = tf.Variable(
    tf.random_uniform((store, v_store), -r_range, r_range),
    name="store"
    )

embed_store = tf.nn.embedding_lookup(emb_store, z_store)
最后,我将分类占位符和连续占位符连接在一起

inputs_with_embed = tf.concat([x, embed_store], axis=2, name="inputs_with_embed")
这就是我用最后一层乘以张量向量的地方

val = tf.transpose(val, [1, 0, 2])
last = tf.gather(val, int(val.get_shape()[0]) - 1, name="lstm_state")
ws = tf.Variable(tf.truncated_normal([lstm_size, input_size]), name="w")
bias = tf.Variable(tf.constant(0.1, shape=[input_size]), name="b")
编辑: 所有的tensorflow图代码都运行良好。但是当我执行会话代码时,我得到了以下错误:

InvalidArgumentError (see above for traceback): Incompatible shapes: [50,4] vs. [50,7,1]
   [[Node: sub = Sub[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](add, _arg_input_y_0_4)]]
还有我的预测部分

loss = tf.reduce_mean(tf.square(pred - y), name="loss_mse_train")
编辑结束

有人能告诉我哪里出了错吗


谢谢

正如我所说,如果你想给每个时间步一个预测值,你应该将
ws
改为
[lstm\u size,7]
偏差
改为
[7]

ws = tf.Variable(tf.truncated_normal([lstm_size, 7]), name="w")
bias = tf.Variable(tf.constant(0.1, shape=[7]), name="b")

# need to change shape when pred=(?,7) and y=(?,7,1) 
loss = tf.reduce_mean(tf.square(pred - tf.squeeze(y)), name="loss_mse_train")

pred
的形状是
[50,4]
,但是
y\u pred
的形状是
[50,7,1]
。如果您想给每个时间步长一个预测值,您应该将
ws
更改为
[lstm\u size,7]
并将
bias
更改为
[7]
@giser\u yugang:谢谢您的评论。我已经更新了我的代码。你是对的。我的预测是50X4维。但我正在遵循你建议的步骤。你能再帮我一点忙吗。谢谢!当然,你可以发布你当前的错误。我已经把更新的代码放进去了。在编辑区。谢谢另外,我所有的代码、错误和样本数据都在最后一个链接中。你也可以参考一下。谢谢你!完美的非常感谢@giser_yugang!为了解决这个问题,我彻夜不眠。我从最意想不到的地方得到了答案。再次感谢:)