Тензорные объекты tenorflow api 2.0 являются итеративными, только если включено активное выполнение.Чтобы перебрать этот тензор, используйте tf.map_fn - PullRequest
3 голосов
/ 08 марта 2019

Я пытаюсь использовать оценку тензорного потока, используя тензор потока API 2.

import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame({'A': np.array([100, 105.4, 108.3, 111.1, 113, 114.7]),
                   'B': np.array([11, 11.8, 12.3, 12.8, 13.1,13.6]),
                   'C': np.array([55, 56.3, 57, 58, 59.5, 60.4]),
                   'Target': np.array([4000, 4200.34, 4700, 5300, 5800, 6400])})

featcols = [
    tf.feature_column.numeric_column("A"),
    tf.feature_column.numeric_column("B"),
    tf.feature_column.numeric_column("C")
]

model = tf.estimator.LinearRegressor(featcols)

features = tf.convert_to_tensor(["A", "B", "C"])

def train_input_fn():
    training_dataset = (
        tf.data.Dataset.from_tensor_slices(
            (
                tf.cast(df[[features]].values, tf.float32),
                tf.cast(df['Target'].values, tf.float32)
            )
        )
    )
    return training_dataset

model.train(train_input_fn)

Последняя строка бросает меня:

TypeError: Tensor objects are only iterable when eager execution is enabled. To iterate over this tensor use tf.map_fn

Кроме того, это дает мне предупреждение:

Variable.initialized_value (from tensorflow.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Use Variable.read_value. Variables in 2.X are initialized automatically both in eager and graph (inside tf.defun) contexts.

1 Ответ

1 голос
/ 10 марта 2019

Это завершается без ошибок.Но я не проверял.Только что установлен тензор потока 2.0 альфа.

Пожалуйста, проверьте документы для получения дополнительной помощи.

import tensorflow as tf
import pandas as pd
import numpy as np



df = pd.DataFrame(data={'A': np.array([100, 105.4, 108.3, 111.1, 113, 114.7]),
                        'B': np.array([11, 11.8, 12.3, 12.8, 13.1,13.6]),
                        'C': np.array([55, 56.3, 57, 58, 59.5, 60.4]),
                        'Target': np.array([4000, 4200.34, 4700, 5300, 5800, 6400])})
print (df.describe())
featcols = [
    tf.feature_column.numeric_column("A"),
    tf.feature_column.numeric_column("B"),
    tf.feature_column.numeric_column("C")
]

model = tf.estimator.LinearRegressor(featcols)


def make_input_fn():
  def train_input_fn():
    label = df.pop('Target')
    print( label )
    print ( df )
    ds = tf.data.Dataset.from_tensor_slices((dict(df), label))
    ds = ds.batch(1).repeat(1)
    return ds

  return train_input_fn


model.train(make_input_fn())

Я также показал здесь, что напечатано для меня.

Limited tf.compat.v2.summary API due to missing TensorBoard installation
Limited tf.summary API due to missing TensorBoard installation
                A          B         C       Target
count    6.000000   6.000000   6.00000     6.000000
mean   108.750000  12.433333  57.70000  5066.723333
std      5.421716   0.939503   2.01792   937.309351
min    100.000000  11.000000  55.00000  4000.000000
25%    106.125000  11.925000  56.47500  4325.255000
50%    109.700000  12.550000  57.50000  5000.000000
75%    112.525000  13.025000  59.12500  5675.000000
max    114.700000  13.600000  60.40000  6400.000000
WARNING: Logging before flag parsing goes to stderr.
W0313 19:30:06.720984 10576 estimator.py:1799] Using temporary folder as model directory: C:\Users\476458\AppData\Local\Temp\tmpkk4q3ute
W0313 19:30:06.767783 10576 deprecation.py:323] From C:\tensorflow2\lib\site-packages\tensorflow\python\training\training_util.py:238: Variable.
initialized_value (from tensorflow.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Use Variable.read_value. Variables in 2.X are initialized automatically both in eager and graph (inside tf.defun) contexts.
0    4000.00
1    4200.34
2    4700.00
3    5300.00
4    5800.00
5    6400.00
Name: Target, dtype: float64
       A     B     C
0  100.0  11.0  55.0
1  105.4  11.8  56.3
2  108.3  12.3  57.0
3  111.1  12.8  58.0
4  113.0  13.1  59.5
5  114.7  13.6  60.4
W0313 19:30:06.861381 10576 deprecation.py:323] From C:\tensorflow2\lib\site-packages\tensorflow\python\feature_column\feature_column_v2.py:2758
: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.cast` instead.
W0313 19:30:07.220174 10576 deprecation.py:506] From C:\tensorflow2\lib\site-packages\tensorflow\python\training\slot_creator.py:187: calling Ze
ros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
2019-03-13 19:30:07.672566: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was
not compiled to use: AVX2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...