首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为KerasTensor构建TypeSpec

无法为KerasTensor构建TypeSpec
EN

Stack Overflow用户
提问于 2021-02-10 18:33:11
回答 1查看 680关注 0票数 2

运行以下命令:

代码语言:javascript
复制
import tensorflow as tf

from tensorflow.keras import layers
from tensorflow import keras


feat_shape = (50, 66, 3)

inputs = layers.Input(shape=(None,) + feat_shape[1:], dtype=tf.float32)
x = inputs

shape = tf.shape(x)
b, t, f, c = x.get_shape().as_list()
x = layers.Lambda(tf.reshape, arguments=dict(shape=(shape[0], shape[1], shape[2] * shape[3])))(x)
x.set_shape((b, t, f * c))

x = layers.Dense(filters)(x)

lstm_out = layers.LSTM(lstm_units, return_sequences=True, return_state=True)(x)
x = lstm_out[0]

model = keras.Model(inputs=inputs, outputs=x)

抛给我这个错误:

代码语言:javascript
复制
TypeError: Could not build a TypeSpec for <KerasTensor: shape=(None, None, None) dtype=float32 (created by layer 'tf.reshape')> with type KerasTensor

我使用的Tensorflow版本是2.4.0,我非常确定这样的东西应该可以工作。

这里的问题是什么?我如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 18:39:09

代码语言:javascript
复制
def reshape_(t):
    shape = tf.shape(t)
    B, T, F, C = t.get_shape().as_list()
    t = tf.reshape(t, shape=(shape[0], shape[1], shape[2] * shape[3]))
    t.set_shape((B, T, F * C))
    return t

inputs = layers.Input(shape=(None,) + feat_shape[1:], dtype=tf.float32)
x = inputs
x = layers.Lambda(reshape_)(x)
x = layers.Dense(filters)(x)

lstm_out = layers.LSTM(lstm_units, return_sequences=True, return_state=True)(x)
x = lstm_out[0]

model = keras.Model(inputs=inputs, outputs=x)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66135173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档