Tensorflow输入形状不兼容

鲍威尔

尝试构建一个Tensorflow模型,其中我的数据具有70个功能。这是我的第一层的设置:

tf.keras.layers.Dense(units=50, activation='relu', input_shape=(None,70)),

将输入形状设置为(None,70)对我来说似乎是最好的,因为我正在使用前馈神经网络,其中每个“行”数据都是唯一的。我正在使用大小为10的批处理大小(现在),我的输入形状应该更改为(10,70)??吗?

我尝试使用原始文件(None, 70)并得到错误:

WARNING:tensorflow:Model was constructed with shape (None, None, 70) for input Tensor("dense_33_input:0", shape=(None, None, 70), dtype=float32), but it was called on an input with incompatible shape (10, 70).

TypeError: Input 'y' of 'Mul' Op has type float64 that does not match type float32 of argument 'x'.

很困惑于到底是怎么回事错的input_shape作为(None, 70)似乎适合最好。任何帮助深表感谢。

编辑:想要添加一个可重现的示例以获得更多上下文。对不起,长度。这是[此示例] [1]的复制品,以更好地适合我的当前数据(非图像)。

可变自动编码器模型

class VAE(tf.keras.Model):
    
    def __init__(self, latent_dim):
        super(VAE, self).__init__()
        self.latent_dim = latent_dim
        self.encoder = tf.keras.Sequential(
        [
            tf.keras.layers.Dense(units=50, activation='relu', input_shape=(70,)),
            tf.keras.layers.Dense(latent_dim + latent_dim), #No activation
        ])
        
        self.decoder = tf.keras.Sequential(
        [
            tf.keras.layers.Dense(units=50, activation='relu', input_shape=(latent_dim,)),
            tf.keras.layers.Dense(units=70),
        ])
        
    @tf.function
    def sample(self, eps=None):
        if eps is None:
            eps = tf.random.normal(shape=(100, self.latent_dim))
        return self.decode(eps, apply_sigmoid=True)

    def encode(self, x):
        mean, logvar = tf.split(self.encoder(x), num_or_size_splits=2, axis=1)
        return mean, logvar

    def reparameterize(self, mean, logvar):
        eps = tf.random.normal(shape=mean.shape)
        return eps * tf.exp(logvar * .5) + mean

    def decode(self, z, apply_sigmoid=False):
        logits = self.decoder(z)
        if apply_sigmoid:
            probs = tf.sigmoid(logits)
            return probs
        return logits


  [1]: https://www.tensorflow.org/tutorials/generative/cvae

优化器和损失Funx

optimizer = tf.keras.optimizers.Adam(1e-4)

def log_normal_pdf(sample, mean, logvar, raxis=1):
    log2pi = tf.math.log(2. * np.pi)
    return tf.reduce_sum(
        -.5 * ((sample - mean) ** 2. * tf.exp(-logvar) + logvar + log2pi), axis=raxis)

def compute_loss(model, x):
    mean, logvar = model.encode(x)
    z = model.reparameterize(mean, logvar)
    x_logit = model.decode(z)
    cross_ent = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_logit, labels=x)
    logpx_z = -tf.reduce_sum(cross_ent, axis=[1])
    logpz = log_normal_pdf(z, 0, 0)
    logqz_x = log_normal_pdf(z, mean, logvar)
    return -tf.reduce_mean(logpx_z + logpz - logqz_x)

@tf.function
def train_step(model, x, optimizer):
    with tf.GradientTape() as tape:
        loss = compute_loss(model, x)
    gradients = tape.gradient(loss, model.trainable_variables)
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))

培养

X = tf.random.uniform((100,70))
y = tf.random.uniform((100,))

ds_train = tf.data.Dataset.from_tensor_slices((X, y))

tf.random.set_seed(1)

train = ds_train.shuffle(buffer_size=len(X))
train = train.batch(batch_size=10, drop_remainder=False)

epochs = 5
latent_dim = 2

model = VAE(2)

for epoch in range(1, epochs+1):
    start_time = time.time()
    for i, (train_x, train_y) in enumerate(train):
        train_step(model, train_x, optimizer)
    end_time = time.time()
    
    loss = tf.keras.metrics.Mean()
    for i, (test_x, test_y) in enumerate(ds_test):
        loss(compute_loss(model, test_x))
    elbo = -loss.result()
    display.clear_output(wait=False)
    print('Epoch: {}, Test set ELBO: {}, time elapse for current epoch: {}'
         .format(epoch, elbo, end_time - start_time))
雅各布

input_shape不应包括批次尺寸。使用input_shape=(70,)

tf.keras.layers.Dense(units=50, activation='relu', input_shape=(70,))

您可以在致电时设置批次大小model.fit(..., batch_size=10)请参阅中的文档tf.keras.Model.fit

由于将int32传递,原始帖子中还有另一个错误tf.math.exp该行应显示为

logpz = log_normal_pdf(z, 0., 0.)

解决该错误。请注意这些0.值,它们的结果为浮点数而不是整数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

X和y的形状不兼容

来自分类Dev

tensorflow.equal()op上不兼容的形状用于正确的预测评估

来自分类Dev

TensorFlow的无效参数错误(形状不兼容)

来自分类Dev

tensorflow / tflearn输入形状

来自分类Dev

在形状不兼容的张量上重新调用

来自分类Dev

日期之间输入不兼容

来自分类Dev

不兼容的形状:[1020,1,1]与[1019,1,1]-Tensorflow

来自分类Dev

TensorFlow错误:ValueError(“形状%s和%s不兼容”%(自身,其他))

来自分类Dev

InvalidArgumentError:不兼容的形状:[3]与[4]

来自分类Dev

在tensorflow中获取ValueError,表明我的形状不兼容

来自分类Dev

Colab中的Tensorflow错误-ValueError:形状(无,1)和(无,10)不兼容

来自分类Dev

小型MLP的Keras层形状不兼容

来自分类Dev

层density_18的输入0与该层不兼容:输入形状的预期轴-1的值为3500,但接收到形状为[None,7]的输入

来自分类Dev

警告:tensorflow:使用输入Tensor()的形状构造模型。但它在形状不兼容的输入上被调用

来自分类Dev

ValueError:形状在LSTM模型中不兼容

来自分类Dev

Tensorflow概率:ValueError:Tensor的形状(2,2)与提供的形状(2,)不兼容

来自分类Dev

ValueError:形状1和2不兼容

来自分类Dev

LSTM输入形状错误:输入0与图层Sequence_1不兼容

来自分类Dev

TensorFlow GradCAM-model.fit()-ValueError:形状(None,1)和(None,2)不兼容

来自分类Dev

(使用Keras)的Tensorflow中``InvalidArgumentError:不兼容的形状:[10,2]与[10]”的原因是什么?

来自分类Dev

tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

来自分类Dev

tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

来自分类Dev

tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

来自分类Dev

tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

来自分类Dev

图层顺序的输入0与图层不兼容:输入形状的预期轴-1的值为784

来自分类Dev

Tensorflow对象检测中的输入张量与Python签名不兼容

来自分类Dev

TensorFlow逻辑运算((A == B)&&(C == D))导致“形状不兼容:[2]与[3]”

来自分类Dev

Tensorflow - 使用 tf.losses.hinge_loss 导致形状不兼容错误

来自分类Dev

Keras - CNN 输入形状不兼容

Related 相关文章

  1. 1

    X和y的形状不兼容

  2. 2

    tensorflow.equal()op上不兼容的形状用于正确的预测评估

  3. 3

    TensorFlow的无效参数错误(形状不兼容)

  4. 4

    tensorflow / tflearn输入形状

  5. 5

    在形状不兼容的张量上重新调用

  6. 6

    日期之间输入不兼容

  7. 7

    不兼容的形状:[1020,1,1]与[1019,1,1]-Tensorflow

  8. 8

    TensorFlow错误:ValueError(“形状%s和%s不兼容”%(自身,其他))

  9. 9

    InvalidArgumentError:不兼容的形状:[3]与[4]

  10. 10

    在tensorflow中获取ValueError,表明我的形状不兼容

  11. 11

    Colab中的Tensorflow错误-ValueError:形状(无,1)和(无,10)不兼容

  12. 12

    小型MLP的Keras层形状不兼容

  13. 13

    层density_18的输入0与该层不兼容:输入形状的预期轴-1的值为3500,但接收到形状为[None,7]的输入

  14. 14

    警告:tensorflow:使用输入Tensor()的形状构造模型。但它在形状不兼容的输入上被调用

  15. 15

    ValueError:形状在LSTM模型中不兼容

  16. 16

    Tensorflow概率:ValueError:Tensor的形状(2,2)与提供的形状(2,)不兼容

  17. 17

    ValueError:形状1和2不兼容

  18. 18

    LSTM输入形状错误:输入0与图层Sequence_1不兼容

  19. 19

    TensorFlow GradCAM-model.fit()-ValueError:形状(None,1)和(None,2)不兼容

  20. 20

    (使用Keras)的Tensorflow中``InvalidArgumentError:不兼容的形状:[10,2]与[10]”的原因是什么?

  21. 21

    tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

  22. 22

    tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

  23. 23

    tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

  24. 24

    tensorflow:模型是用形状(无,无,6)构造的,但是在形状不兼容的输入上被调用

  25. 25

    图层顺序的输入0与图层不兼容:输入形状的预期轴-1的值为784

  26. 26

    Tensorflow对象检测中的输入张量与Python签名不兼容

  27. 27

    TensorFlow逻辑运算((A == B)&&(C == D))导致“形状不兼容:[2]与[3]”

  28. 28

    Tensorflow - 使用 tf.losses.hinge_loss 导致形状不兼容错误

  29. 29

    Keras - CNN 输入形状不兼容

热门标签

归档