【问题标题】:tensorflow ValueError: Shapes are incompatibletensorflow ValueError:形状不兼容
【发布时间】:2021-05-12 06:44:26
【问题描述】:

我的模型x 是一个浮点数组(每个样本是一个包含 40 个元素的数组)。我的模型y 也是一个浮点数组(每个样本都是一个包含 80 个元素的数组)。这是重现我的问题的代码:

import tensorflow as tf
from tensorflow.keras import models, layers
import numpy as np

x = []
for i in range(100):
  array_of_random_floats = np.random.random_sample((40))
  x.append(array_of_random_floats)
x = np.asarray(x)

y = []
for i in range(100):
  array_of_random_floats = np.random.random_sample((80))
  y.append(array_of_random_floats)
y = np.asarray(y)

print(f"x has {len(x)} elements. Each element has {len(x[0])} elements")
# x has 100 elements. Each element has 40 elements

print(f"y has {len(y)} elements. Each element has {len(y[0])} elements")
# y has 100 elements. Each element has 80 elements


model = models.Sequential([
  layers.Input(shape=(40,)),
  layers.Dense(units=40),
])

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())

history = model.fit(x=x,
                    y=y,
                    epochs=100)

这就是产生的错误。

ValueError: Shapes (None, 80) and (None, 40) are incompatible

出了什么问题?

【问题讨论】:

    标签: python numpy tensorflow


    【解决方案1】:

    为了衡量损失,维度需要匹配。您正在尝试将(100, 40) 的输出与(100, 80) 的目标数组进行比较。

    【讨论】:

    • 我明白了。但事实是每个 y 总是每个 x 的两倍。我怎样才能做到这一点?
    • 将最后一层的单位改为 80
    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2018-01-10
    • 2021-02-23
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多