Вопрос:

Столбец функции TensorFlow DNNClassifier

python numpy tensorflow machine-learning

718 просмотра

2 ответа

72 Репутация автора

Я успешно использовал набор данных mnist из tenorflow в модели глубоких нейронных сетей, которую я кодировал с нуля. Теперь я хотел попробовать использовать гораздо более простую функцию DNNClassifier, доступную в tenorflow. Есть две проблемы, с которыми я сталкиваюсь, и я не могу найти решение в Интернете

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)


estimator = tf.estimator.DNNClassifier(
    feature_columns=[28,9], #WTH is this!?!!
    hidden_units=[28, 512, 9],
    optimizer=tf.train.GradientDescentOptimizer(
        learning_rate=0.1,
    ))
x,y =mnist.train.next_batch(500)


estimator.train(input_fn=x,y,steps = 100)
  1. Есть один параметр, связанный с DNNClassifier, который является feature_columns. Документация для этого не имеет смысла для меня. Что такое feature_columns? Какую роль он играет в глубокой нейронной сети? Какой тип переменной следует указать? (список, кортеж, массив numpy?)

  2. Как мне передать данные тренировки в оценщик? Я не смог преодолеть проблему feature_columns, поэтому я не смог заставить работать оценщик, а это значит, что я не могу заставить обучение работать. Но я считаю, что мое текущее кодирование - неправильный способ сделать это.

Автор: 5Volts Источник Размещён: 05.01.2018 03:47

Ответы (2)


1 плюс

176 Репутация автора

Переменная создает feature_columns, которая определяет входные данные для модели. Не уверен, почему массив будет использоваться для переменной, это должен быть tf.feature_column.numeric_column, так как все входные объекты являются числовыми в mnist.

Что касается подачи данных, люди из тензорного потока, похоже, исключительно реализуют функции ввода, которые значительно упрощают подачу и форматирование данных.

Иногда я нахожу документацию полезной. Похоже, что вы собрали различные части в свой код, и что не все они совместимы. Например, постоянные оценщики не принимают ввод скорости обучения. Кроме того, количество скрытых модулей намного превышает необходимое, если только вы не любите смотреть, как ваш процессор доводит вентиляторов до предела.

Блог разработчиков написан понятным, тщательным образом. Я бы порекомендовал начать с блога, чтобы научиться пользоваться «консервированными» оценщиками. Он действительно понятен и прост в использовании для адаптации машинного обучения к вашим собственным наборам данных.

Видеть это; https://developers.googleblog.com/2017/09/introducing-tensorflow-datasets.html

Автор: jsfa11 Размещён: 05.01.2018 05:04

1 плюс

36 Репутация автора

Я попытался использовать пример кода SQLFlow, чтобы объяснить, что такое «feature_columns».

показать набор данных:

SELECT * from iris.train limit 2;

-----------------------------
+--------------+-------------+--------------+-------------+-------+
| SEPAL LENGTH | SEPAL WIDTH | PETAL LENGTH | PETAL WIDTH | CLASS |
+--------------+-------------+--------------+-------------+-------+
|          6.4 |         2.8 |          5.6 |         2.2 |     2 |
|            5 |         2.3 |          3.3 |           1 |     1 |
+--------------+-------------+--------------+-------------+-------+

Учебный скрипт:

SELECT *
FROM iris.train
TRAIN DNNClassifier
WITH n_classes = 3, hidden_units = [10, 20]
COLUMN sepal_length, sepal_width, petal_length, petal_width  /* This is "feature_columns" */
LABEL class
INTO sqlflow_models.my_dnn_model;

К вашему сведению: https://github.com/sql-machine-learning/sqlflow/blob/develop/doc/demo.md#training-a-dnnclassifier-and-run-prediction

Автор: llxxxll Размещён: 17.05.2019 08:00
Вопросы из категории :
32x32