ValueError:形状(1,107,3)和(1,107,2)不兼容

时间:2020-06-25 12:27:18

标签: tensorflow2.0 tensor

我有这样一个问题,它发生在最新版本的tensorflow上。我希望有人能给我一些建议。 我的代码如下:

%tensorflow_version 2.x
import tensorflow as tf
import numpy as np
import h5py
import t3f
import matplotlib.pyplot as plt
filename = "./video.h5"
np.random.seed(0)
with h5py.File(filename, "r") as f:
    print("Keys: %s" % f.keys())
    a_group_key = list(f.keys())[0]
    data = list(f[a_group_key])
    data_np = np.array(data)
data_tensor = tf.convert_to_tensor(data_np)
shape = [107]+[60]+[80]+[3]
# A is large tt-ranks tensor
A = t3f.to_tt_tensor(data_tensor)
# Create an X variable.
init_X = t3f.random_tensor(shape, tt_rank=3)
X = t3f.get_variable('X', initializer=init_X)
def step():
    gradF = X - A
    riemannian_grad = t3f.riemannian.project(gradF, X)
    alpha = 1.0
    t3f.assign(X, t3f.round(X - alpha * riemannian_grad, max_tt_rank=2))
    return 0.5 * t3f.frobenius_norm_squared(X - A)
log = []
for i in range(1000):
    F = step()
    if i % 10 == 0:
        print(F)
    log.append(F.numpy())

退出:


ValueError跟踪(最近一次通话最后一次)
1个日志= [] 2代表我在范围(1000)中: ----> 3 F = step() 如果i%10 == 0,则为4: 5次打印(F)

4帧 /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor_shape.py in assert_is_compatible_with(self,other)1115“”“ 1116
如果不是self.is_compatible_with(other): -> 1117提高ValueError(“形状%s和%s不兼容”%(自身,其他))1118 1119 def most_specific_compatible_shape(其他):

ValueError:形状(1、107、3)和(1、107、2)不兼容

但是data_tensor的形状是[107] + [60] + [80] + [3],与A或X相同,我很困惑。

我使用tf2和python3.6在google colab上运行了此代码。 在此链接中,您将再次遇到我的问题link

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题!这是由于张量之间的等级不同所致。因此,我修改了一个张量等级以匹配另一个张量。