【发布时间】:2019-07-31 15:58:53
【问题描述】:
我正在尝试在 Keras 中构建一个 RNN。我不太了解所需的输入格式。我可以构建密集网络没问题,但我认为 RNN 层期望输入维度 x 批次 x 时间步长?任何人都可以验证这一点吗?
这是我要更新的代码:
原码:
def get_generative(G_in, dense_dim=200, out_dim=50, lr=1e-3):
x = Dense(dense_dim)(G_in)
x = Activation('tanh')(x)
G_out = Dense(out_dim, activation='tanh')(x)
G = Model(G_in, G_out)
opt = SGD(lr=lr)
G.compile(loss='binary_crossentropy', optimizer=opt)
return G, G_out
G_in = Input(shape=[10])
G, G_out = get_generative(G_in)
G.summary()
使用 GRU 层和一些稍微不同的维度进行修改:
def get_generative(G_in, dense_dim=10, out_dim=37, lr=1e-3):
clear_session()
x = GRU(dense_dim, activation='tanh',return_state=True)(G_in)
G_out = GRU(out_dim, return_state=True)(x)
G = Model(G_in, G_out)
opt = SGD(lr=lr)
G.compile(loss='binary_crossentropy', optimizer=opt)
return G, G_out
G_in = Input(shape=(None,3))
G, G_out = get_generative(G_in)
G.summary()
我在这段代码中看到的错误是:
ValueError: Tensor("gru_1/strided_slice:0", shape=(3, 10), dtype=float32) 必须来自同一图表 张量("strided_slice_1:0", shape=(?, 3), dtype=float32).
如果我删除上面的None,我会得到:
ValueError:输入 0 与层 gru_1 不兼容:预期 ndim=3, 发现 ndim=2
这里的任何解释都会有所帮助。
【问题讨论】:
标签: python tensorflow keras keras-layer