web-dev-qa-db-ja.com

TF 2.0印刷テンソル値

私はTensorflow(2.0)の最新リリースを学習しており、簡単なコードを実行して行列をスライスしようとしました。デコレータ@ tf.functionを使用して、次のクラスを作成しました。

class Data:
def __init__(self):
    pass

def back_to_zero(self, input):
    time = tf.slice(input, [0,0], [-1,1])
    new_time = time - time[0][0]
    return new_time

@tf.function
def load_data(self, inputs):
    new_x = self.back_to_zero(inputs)
    print(new_x)

したがって、numpy行列を使用してコードを実行すると、数値を取得できません。

time = np.linspace(0,10,20)
magntiudes = np.random.normal(0,1,size=20)
x = np.vstack([time, magntiudes]).T


d = Data()
d.load_data(x)

出力:

Tensor("sub:0", shape=(20, 1), dtype=float64)

このテンソルを派手な形式で取得する必要がありますが、TF 2.0にはrun()またはeval()メソッドを使用するためのクラスtf.Sessionがありません。

あなたが私に提供できる助けをありがとう!

問題は、グラフ内で直接テンソルの値を取得できないことです。だからあなたはどちらかを@edkevekedがtf.printまたは次のようにコードを変更します。

class Data:
    def __init__(self):
        pass

    def back_to_zero(self, input):
        time = tf.slice(input, [0,0], [-1,1])
        new_time = time - time[0][0]

        return new_time

    @tf.function
    def load_data(self, inputs):
        new_x = self.back_to_zero(inputs)

        return new_x

time = np.linspace(0,10,20)
magntiudes = np.random.normal(0,1,size=20)
x = np.vstack([time, magntiudes]).T

d = Data()
data = d.load_data(x)
print(data.numpy())
0
gorjan