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]]