【问题标题】:Tensorflow classification program with multiple parameters带有多个参数的Tensorflow分类程序
【发布时间】:2018-08-16 01:23:16
【问题描述】:

Tensorflow 的初学者。

我正在尝试运行一个分类模型,其中包含多个 numpy 数组作为输入,其中包含两个可能的类别,它将被分类到其中。我无法让它运行。我尝试查看教程和其他线程,但我没有任何想法。有谁知道如何创建一个接受多个参数作为数组的模型?

feedmag feedlat feedtime 和 feedlong 是 numpy 数组

这是错误信息:

label_ids 格式(labels.dtype))

ValueError: Labels dtype 应该是整数。反而得到了。

这是我的代码。

for i in range (0,34):
    labels = np.append(labels,int(1));
for i in range (0,34):
    labels = np.append(labels,int(2));
    feature = {'magnitude':  feedmag,
            'time':  feedtime,
            'latitude': feedlat,
            'longitude':  feedlong}

 my_feature_columns = []
 for key in feature.keys():
 my_feature_columns.append(tf.feature_column.numeric_column(key=key))

classifier = tf.estimator.DNNClassifier(
   feature_columns=my_feature_columns,
    # Two hidden layers of 10 nodes each.
   hidden_units=[10, 10],
   n_classes = 4;
    # The model must choose between 3 classes.
    optimizer=tf.train.ProximalAdagradOptimizer(
  learning_rate=0.1,

  l1_regularization_strength=0.001))
with tf.Session() as session:
    train_input_fn = tf.estimator.inputs.numpy_input_fn(
  feature,
  labels,
  num_epochs=1,
  shuffle=True,
  batch_size=33)

    test_input_fn = tf.estimator.inputs.numpy_input_fn(
        feature,
        labels,
        num_epochs=1,
        shuffle=False,
        batch_size=33)
classifier.train(input_fn = lambda: train_input_fn)
print('starting')
print(classifier.evaluate(
  input_fn=test_input_fn, steps = 33))
print("ending")
print(tf.VERSION)

【问题讨论】:

  • 更改为分类器.train(input_fn = train_input_fn) 出现另一个错误 InvalidArgumentError(请参阅上面的回溯):断言失败:[标签 ID 必须
  • 改了一些错误 ValueError: Labels dtype should be integer。取而代之的是 .

标签: python tensorflow machine-learning classification


【解决方案1】:

尝试改变这一行:

classifier.train(input_fn = lambda: train_input_fn)

到...

classifier.train(input_fn=train_input_fn)

解释:train_input_fn 正在将 numpy 数组转换为张量(这是 tensorflow 所期望的),而 lambda: train_input_fn 是一个返回 train_input_fn 函数的函数。

【讨论】:

  • 第一个错误消失了,但我现在收到另一个错误 InvalidArgumentError(请参阅上面的回溯):断言失败:[标签 ID 必须
  • @NathanZhang 你没有提供labels 和其他数组来重现它。我认为您还应该修复缩进(与feature 一致)
  • @NathanZhang 设置了n_classesDNNClassifier 参数。默认是二进制的
  • 是的,缩进在实际代码中很好,我的标签代码适用于范围 (0,34) 内的 i:labels = np.append(labels,1);对于范围内的 i (0,34):标签 = np.append(labels,2)
  • @NathanZhang 不要将代码发布到 cmets,只需修复有问题的代码
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 2022-11-03
  • 1970-01-01
相关资源
最近更新 更多