Sensorflow: So ändern Sie den Wert im Tensor

Da ich einige Vorprozesse für die Daten schreiben muss, bevor Tensorflow zum Trainieren von Modellen verwendet wird, sind einige Änderungen amtensor wird gebraucht. Ich habe jedoch keine Ahnung, wie ich die Werte in @ ändern soltensor wie der Weg mitnumpy.

Der beste Weg, dies zu tun, ist, dass es in der Lage ist, @ zu ändetensor direkt. In der aktuellen Version von Tensorflow scheint dies jedoch nicht möglich zu sein. Ein alternativer Weg ist das Ändern vontensor zundarray für den Prozess, und verwenden Sie danntf.convert_to_tensor, um zurück zu wechseln.

Der Schlüssel ist, wie man @ ändetensor zundarray.
1)tf.contrib.util.make_ndarray(tensor): https: //www.tensorflow.org/versions/r0.8/api_docs/python/contrib.util.html#make_ndarra
Es scheint der einfachste Weg zu sein, wie aus dem Dokument hervorgeht, aber ich kann diese Funktion in der aktuellen Version des Tensorflow nicht finden. Zweitens ist der Eingang davonTensorProto eher, alstensor.
2) Verwenden Siea.eval() Kopierena zum anderenndarray
Yet, es funktioniert nur mittf.InteractiveSession() im Notizbuch.

Ein einfacher Fall mit Codes wird unten gezeigt. Der Zweck dieses Codes besteht darin, dass dastfc hat die gleiche Ausgabe wienpc nach dem Prozess.

HINWEI
Sie sollten das behandelntfc undnpc sind unabhängig voneinander. Dies entspricht der Situation, dass sich die abgerufenen Trainingsdaten zunächst in @ befindetensor Format mittf.placeholder().

Quellcod

import numpy as np
import tensorflow as tf
tf.InteractiveSession()

tfc = tf.constant([[1.,2.],[3.,4.]])
npc = np.array([[1.,2.],[3.,4.]])
row = np.array([[.1,.2]])
print('tfc:\n', tfc.eval())
print('npc:\n', npc)
for i in range(2):
    for j in range(2):
        npc[i,j] += row[0,j]

print('modified tfc:\n', tfc.eval())
print('modified npc:\n', npc)

Ausgabe

tfc:
[[1. 2.]
[3. 4.]]
npc:
[[1. 2.]
[3. 4.]]
modified tfc:
[[1. 2.]
[3. 4.]]
modified npc:
[[1.1 2.2]
[3.1 4.2]]

Antworten auf die Frage(2)

Ihre Antwort auf die Frage