Python 在运行以下命令之后;“培训模式”;我得到这个错误
创建此模型后,我收到一个错误“unsupported callable” 错误: TypeError:不支持的可调用Python 在运行以下命令之后;“培训模式”;我得到这个错误,python,tensorflow,machine-learning,deep-learning,jupyter-notebook,Python,Tensorflow,Machine Learning,Deep Learning,Jupyter Notebook,创建此模型后,我收到一个错误“unsupported callable” 错误: TypeError:不支持的可调用 该错误是因为访问精度的正确键为精度(小写为a) 为了了解发生了什么,您可以打印result的值 如果我们执行命令,print(result),输出将是 {'accuracy': 0.7386364, 'accuracy_baseline': 0.625, 'auc': 0.83783287, 'auc_precision_recall': 0.78672063, 'av
该错误是因为访问
精度
的正确键为精度
(小写为a)
为了了解发生了什么,您可以打印result
的值
如果我们执行命令,print(result)
,输出将是
{'accuracy': 0.7386364, 'accuracy_baseline': 0.625, 'auc': 0.83783287,
'auc_precision_recall': 0.78672063, 'average_loss': 0.47509083, 'label/mean': 0.375,
'loss': 0.46859953, 'precision': 0.64705884, 'prediction/mean': 0.39348394,
'recall': 0.6666667, 'global_step': 200}
可以使用结果['accurity']
访问精度
完整的工作代码如下所示:
import os
import sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import clear_output
from six.moves import urllib
import tensorflow.compat.v2.feature_column as fc
import tensorflow as tf
# Load dataset.
dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')
y_train = dftrain.pop('survived')
y_eval = dfeval.pop('survived')
CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck',
'embark_town', 'alone']
NUMERIC_COLUMNS = ['age', 'fare']
feature_columns = []
for feature_name in CATEGORICAL_COLUMNS:
vocabulary = dftrain[feature_name].unique()
feature_columns.append(tf.feature_column.categorical_column_with_vocabulary_list(feature_name, vocabulary))
for feature_name in NUMERIC_COLUMNS:
feature_columns.append(tf.feature_column.numeric_column(feature_name, dtype=tf.float32))
def make_input_fn(data_df, label_df, num_epochs=10, shuffle=True, batch_size=32):
def input_function():
ds = tf.data.Dataset.from_tensor_slices((dict(data_df), label_df))
if shuffle:
ds = ds.shuffle(1000)
ds = ds.batch(batch_size).repeat(num_epochs)
return ds
return input_function
train_input_fn = make_input_fn(dftrain, y_train)
eval_input_fn = make_input_fn(dfeval, y_eval, num_epochs=1, shuffle=False)
ds = make_input_fn(dftrain, y_train, batch_size=10)()
for feature_batch, label_batch in ds.take(1):
print('Some feature keys:', list(feature_batch.keys()))
print()
print('A batch of class:', feature_batch['class'].numpy())
print()
print('A batch of Labels:', label_batch.numpy())
age_column = feature_columns[7]
tf.keras.layers.DenseFeatures([age_column])(feature_batch).numpy()
gender_column = feature_columns[0]
tf.keras.layers.DenseFeatures([tf.feature_column.indicator_column(gender_column)])(feature_batch).numpy()
linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns)
linear_est.train(train_input_fn)
result = linear_est.evaluate(eval_input_fn)
clear_output()
print(result)
print(result['accuracy'])
上述代码的输出为:
{'accuracy': 0.7348485, 'accuracy_baseline': 0.625, 'auc': 0.8331497, 'auc_precision_recall': 0.7953714, 'average_loss': 0.47750932, 'label/mean': 0.375, 'loss': 0.47087723, 'precision': 0.6407767, 'prediction/mean': 0.4067955, 'recall': 0.6666667, 'global_step': 200}
0.7348485
有关更多详细信息,请参阅此
希望这有帮助。学习愉快 该错误是因为访问
精度
的正确键是精度
(小写为a)
为了了解发生了什么,您可以打印result
的值
如果我们执行命令,print(result)
,输出将是
{'accuracy': 0.7386364, 'accuracy_baseline': 0.625, 'auc': 0.83783287,
'auc_precision_recall': 0.78672063, 'average_loss': 0.47509083, 'label/mean': 0.375,
'loss': 0.46859953, 'precision': 0.64705884, 'prediction/mean': 0.39348394,
'recall': 0.6666667, 'global_step': 200}
可以使用结果['accurity']
访问精度
完整的工作代码如下所示:
import os
import sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import clear_output
from six.moves import urllib
import tensorflow.compat.v2.feature_column as fc
import tensorflow as tf
# Load dataset.
dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')
y_train = dftrain.pop('survived')
y_eval = dfeval.pop('survived')
CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck',
'embark_town', 'alone']
NUMERIC_COLUMNS = ['age', 'fare']
feature_columns = []
for feature_name in CATEGORICAL_COLUMNS:
vocabulary = dftrain[feature_name].unique()
feature_columns.append(tf.feature_column.categorical_column_with_vocabulary_list(feature_name, vocabulary))
for feature_name in NUMERIC_COLUMNS:
feature_columns.append(tf.feature_column.numeric_column(feature_name, dtype=tf.float32))
def make_input_fn(data_df, label_df, num_epochs=10, shuffle=True, batch_size=32):
def input_function():
ds = tf.data.Dataset.from_tensor_slices((dict(data_df), label_df))
if shuffle:
ds = ds.shuffle(1000)
ds = ds.batch(batch_size).repeat(num_epochs)
return ds
return input_function
train_input_fn = make_input_fn(dftrain, y_train)
eval_input_fn = make_input_fn(dfeval, y_eval, num_epochs=1, shuffle=False)
ds = make_input_fn(dftrain, y_train, batch_size=10)()
for feature_batch, label_batch in ds.take(1):
print('Some feature keys:', list(feature_batch.keys()))
print()
print('A batch of class:', feature_batch['class'].numpy())
print()
print('A batch of Labels:', label_batch.numpy())
age_column = feature_columns[7]
tf.keras.layers.DenseFeatures([age_column])(feature_batch).numpy()
gender_column = feature_columns[0]
tf.keras.layers.DenseFeatures([tf.feature_column.indicator_column(gender_column)])(feature_batch).numpy()
linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns)
linear_est.train(train_input_fn)
result = linear_est.evaluate(eval_input_fn)
clear_output()
print(result)
print(result['accuracy'])
上述代码的输出为:
{'accuracy': 0.7348485, 'accuracy_baseline': 0.625, 'auc': 0.8331497, 'auc_precision_recall': 0.7953714, 'average_loss': 0.47750932, 'label/mean': 0.375, 'loss': 0.47087723, 'precision': 0.6407767, 'prediction/mean': 0.4067955, 'recall': 0.6666667, 'global_step': 200}
0.7348485
有关更多详细信息,请参阅此
希望这有帮助。学习愉快