tensorflow2.0 - 类型错误:() 接受 1 个位置参数,但给出了 2 个
问题描述
这是我的代码:
img_gen = tf.keras.preprocessing.image.ImageDataGenerator()
gen = img_gen.flow_from_directory('/train/',(224, 224),'rgb', batch_size = 2)
training_set = tf.data.Dataset.from_generator(lambda : gen, output_types=(tf.float32, tf.float32), output_shapes = ([2,224,224,3],[2,2]))
def read_images(features):
return features['image']
training_set = training_set.map(lambda x: read_images(x), num_parallel_calls=tf.data.experimental.AUTOTUNE)
错误是:
TypeError: <lambda>() takes 1 positional argument but 2 were given
那么如何解决函数 read_images 中的问题。
解决方案
返回
一个 DirectoryIterator 产生 (x, y) 的元组,其中 x 是一个 numpy 数组,其中包含一批形状为 (batch_size, *target_size, channels) 的图像,y 是一个对应标签的 numpy 数组。
您可以看到它返回一个包含 2 个元素的元组,因此您的 map 函数需要处理它。
def read_images(features):
# some processing
output = features
return output
training_set = training_set.map(lambda image, label: read_images(image), num_parallel_calls=tf.data.experimental.AUTOTUNE)
ImageDataGenerator本身有很多可用的处理选项。您还可以查看 tensorflow 页面中的其他教程 -加载图像
查看数据集内容也有助于调试问题
for line in training_set.take(1):
print(len(line))
print(line)
推荐阅读
- javascript - 从没有名称和 Id 值的元素中分离 CK 编辑器
- node.js - 如何将 Vuejs/NodeJS 应用程序部署到 heroku
- c++ - orthoProject freetype opengl
- javascript - 如何在 excel 中给出我在下面指定的 json 中所需的输出
- python - python字符串内部如何工作?
- amazon-web-services - CloudFormation Lambda S3 存储桶访问被拒绝
- python-2.7 - 从网页 Python2 中查找服务版本号
- java - 如何根据 SQL Server 查询结果通过/失败 Cucumber 测试步骤
- javascript - 2D 几何计算 - 在平面上
- jquery - 范围日期选择器多个输入仅适用于第一个字段