我正在尝试Google Crash Course学习TensorFlow和机器学习。 我无法理解他们的coding examples中的其中一行。
def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):
"""Trains a linear regression model of one feature.
Args:
features: pandas DataFrame of features
targets: pandas DataFrame of targets
batch_size: Size of batches to be passed to the model
shuffle: True or False. Whether to shuffle the data.
num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely
Returns:
Tuple of (features, labels) for next data batch
"""
# Convert pandas data into a dict of np arrays.
features = {key:np.array(value) for key,value in dict(features).items()}
我需要帮助来了解最后一行代码。
features = {key:np.array(value) for key,value in dict(features).items()}
I've researched dictionaries,目的是让我自己理解它,但是我仍然要掌握很多东西。我试图以一种我能理解的方式编写同一行代码:
np_dict_array = dict(features).items()
for key,value in np_dict_array:
features += np_dict_array[key]
我认为我没有正确重写代码。具体来说,我需要帮助来了解这行代码的作用:
key:np.array(value)
如果任何人都可以解释该代码行的功能,或者(奖励积分)以新手友好的方式重写它,我将不胜感激!
答案 0 :(得分:1)
features = {key:np.array(value)for key,dict(features).items()}中的值
它是dictionary comprehension。它将dict(features)
中的所有值转换为Numpy数组。
键:np.array(值)
这是将键值对分配给字典的方式。
答案 1 :(得分:1)
这是一种“字典理解”-以列表理解为模型,但改为制作新字典。
features = {key:np.array(value) for key,value in dict(features).items()}
从内而外取物:
dict(features) # make a dictionary from the `features` argument
.items() # make a list of (key,value) tuples
for key,value # iterate on those tuples
np.array(value) # make a numpy array from the value
key:... # make a new entry in the new dictionary
总而言之,它会根据features
创建一个字典,并确保每个项目的value
是一个numpy数组。
fdict = dict(features)
adict = dict() # empty dictionary
for key,value in fdict.items():
adict[key] = np.array(value)
答案 2 :(得分:1)
备用语法:
features = {}
for key, value in dict(features).items():
features[key] = np.array(value)
理解很普遍,因为它们将这种常见的模式减少到了一行。但是,有时随着复杂性的增加,尝试去做太多事情是很诱人的。