ValueError: Please provide model inputs as a list or tuple of 2 or 3 elements: (input, target)

2023-05-16

ValueError: Please provide model inputs as a list or tuple of 2 or 3 elements: (input, target)

报错信息

Traceback (most recent call last):  
  File "vae.py", line 170, in <module>  
    train_model(vae)  
  File "vae.py", line 161, in train_model  
    vae.fit(sequence, epochs=epochs)  
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 819, in fit
    use_multiprocessing=use_multiprocessing)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 235, in fit
    use_multiprocessing=use_multiprocessing)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 593, in _process_training_inputs
    use_multiprocessing=use_multiprocessing)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 706, in _process_inputs
    use_multiprocessing=use_multiprocessing)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/data_adapter.py", line 952, in __init__
    **kwargs)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/data_adapter.py", line 767, in __init__
    dataset = standardize_function(dataset)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py", line 660, in standardize_function
    standardize(dataset, extract_tensors_from_dataset=False)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 2346, in _standardize_user_data
    all_inputs, y_input, dict_inputs = self._build_model_with_inputs(x, y)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 2523, in _build_model_with_inputs
    inputs, targets, _ = training_utils.extract_tensors_from_dataset(inputs)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training_utils.py", line 1678, in extract_tensors_from_dataset
    inputs, targets, sample_weight = unpack_iterator_input(iterator)
  File "/home/fanjiarong/.local/lib/python2.7/site-packages/tensorflow_core/python/keras/engine/training_utils.py", line 1703, in unpack_iterator_input
    'Received %s' % next_element)

ValueError: Please provide model inputs as a list or tuple of 2 or 3 elements: (input, target) or (input, target, sample_weights)
Received tf.Tensor(
[[0.49803922 0.27058825 0.29803923 ... 0.         0.         0.        ]
 [0.49803922 0.27058825 0.29803923 ... 0.         0.         0.        ]
 [0.49803922 0.27058825 0.29803923 ... 0.         0.         0.        ]
 ...
 [0.49803922 0.27058825 0.29803923 ... 0.         0.         0.        ]
 [0.49803922 0.27058825 0.29803923 ... 0.         0.         0.        ]
 [0.49803922 0.27058825 0.29803923 ... 0.         0.         0.        ]], shape=(128, 7744), dtype=float32)   
2022-04-01 21:25:41.965783: W tensorflow/core/kernels/data/generator_dataset_op.cc:103] Error occurred when finalizing GeneratorDataset iterator: Cancelled: Operation was cancelled

分析程序

初始程序如下所示,在实现AE训练中的fit()函数报错,原因为函数接受的参数为向量化的种子文件(input),希望的参数为(input, target) or (input, target, sample_weights) 。我们需要明确对于分类问题,target应为input对应的类别,训练数据中包含数据及类别,可以直接读取;而对于自编码器target应为input对应的重构,需要将input输入AE网络中进行重构,此处使用fit()函数存在不妥。

class TrainSequence(keras.utils.Sequence):
    def __init__(self, input_file_dir, batch_size, configs = configs):
        pass
        
    def __len__(self):
        pass

    def __getitem__(self, idx):
        # 取一批
        batch_names = self.input_files[
            idx * self.batch_size: (idx + 1) * self.batch_size
        ]
        X_length = self.inpurt_sqrt_dim * self.inpurt_sqrt_dim
        a = vectorize_file(batch_names[0], X_length)
        b = vectorize_file(batch_names[1], X_length)
        test = np.array([a,b])
        # 读取并转为numpy矩阵,
        return np.array([vectorize_file(file_name, X_length) for file_name in batch_names])

sequence = TrainSequence(input_dir_path, batch_size, configs)
# 利用生成器提供数据
vae.fit(sequence, epochs=epochs)

修改程序

通过对自编码器的原理及训练过程进行学习,我们使用新的训练方式,通过GradientTape从头开始写训练/评估的循环,修改之后的代码如下所示。
tensorflow2.0 Seq2Seq多个输入时在model.fit()中使用生成器分批训练大量数据
自编码器(AutoEncoder)入门及TensorFlow实现
Tensorflow2 自定义训练

for epoch in range(epochs):
    print('epoch: ', epoch)
    for step, data in enumerate(sequence):
    	with tf.GradientTape() as tape:
         z_mean, z_log_var, z = self.encoder(data)
         reconstruction = self.decoder(z)
         # 重构损失函数
         # axis = -1指按最后一个dimension
         reconstruction_loss = tf.reduce_mean(keras.losses.binary_crossentropy(data, reconstruction))
         # 正则化约束损失函数
         kl_loss = -0.5 * (1 + z_log_var - tf.square(z_mean) - tf.exp(z_log_var))
         # 求和
         kl_loss = tf.reduce_mean(kl_loss)
         total_loss = reconstruction_loss + kl_loss
     grads = tape.gradient(total_loss, self.trainable_weights)
     self.optimizer.apply_gradients(zip(grads, self.trainable_weights))
     self.total_loss_tracker.update_state(total_loss)
     self.reconstruction_loss_tracker.update_state(reconstruction_loss)
     self.kl_loss_tracker.update_state(kl_loss)
vae.save_weights("vae_model_weight")

对于自编码器使用GradientTape从头开始写训练的循环可以避免上述错误。对于训练循环来说,主要包括下面几个部分:

  1. 用一个for循环来控制训练的轮次
  2. 在每轮训练过程中,用一个for循环来控制训练的批次
  3. 在每个批次中,构建一个GradientTape()
  4. 在这个域中,我们调用模型的前向传播,并计算loss
  5. 在域之外,我们计算loss对模型的参数的梯度
  6. 根据梯度,使用优化器更新模型的权重
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ValueError: Please provide model inputs as a list or tuple of 2 or 3 elements: (input, target) 的相关文章

  • 模型与服务解耦:如果我的模型需要服务怎么办?

    服务层应该位于模型层之上 因此 模型不应该调用服务 然而 我面临着我需要的情况 例如 interface Component getResult class Number implements Component private value
  • Rails 验证虚拟属性

    我这个型号 class Bunny lt ActiveRecord Base attr accessor number validates presence of number validates numericality of numbe
  • 如何将模型数据对象数组转换为dataProvider

    假设我有模型User与其自身有多对多的关系 命名为friends so user gt friends or model gt friends在视图中 给了我一个数组User对象 我想将朋友显示为网格视图 但CGridView数据为data
  • 如何解耦小部件的模型/视图

    我正在编写一个应用程序 用于绘制小部件 菜单 控件等以创建应用程序模型 每个屏幕都表示为小部件的集合 每个小部件都是简单的类 例如 class Model object def init self self widgets class Wi
  • 有没有一种方法可以透明地对 SQLAlchemy 对象执行验证?

    有没有办法在设置属性之后 或设置属性时 但在提交会话之前对对象执行验证 例如 我有一个领域模型Device有一个mac财产 我想确保mac属性在添加到数据库或在数据库中更新之前包含有效且经过清理的 mac 值 看起来 Pythonic 方法
  • AngularJS 的面向对象方法

    Angular 似乎没有提供内置的解决方案来定义具有属性和方法的类实例 并且需要开发人员来构建它 您认为这样做的最佳做法是什么 如何将其与后端链接 我收集的一些技巧使用工厂服务和命名函数 资料来源 Tuto 1 https medium c
  • 删除行和 ValueError 数组的长度不同

    我的数据框在每个类别下都有子类别 cat dog bird 显示统计信息 如果行包含信息 我需要删除它们count and freq 并且只保留行sd and mean价值观 一些值是NaN ValueError出现在我的代码中 df va
  • 我需要双向创建 automapper createmap 吗?

    这可能是一个愚蠢的问题 n00b 到 AutoMapper 并且时间很短 我想使用 AutoMapper 从 EF4 实体映射到 ViewModel 类 1 如果我打电话 CreateMap
  • 反转博客条目和评论的显示顺序,Ruby on Rails

    我是 Rails 新手 所以可以在这里使用一些帮助 我已经按照几个教程创建了一个博客 其中包含评论 甚至还有一些 AJAX 花哨的内容 但我仍然坚持一些我希望很简单的事情 博客和评论的默认显示是首先列出最旧的 我如何反转它以在顶部显示最新条
  • 情节子图与规格问题,值错误

    我正在尝试使用辅助 y 轴和绘图子图绘制 3 个子图 但无论我如何尝试 仍然会遇到此类错误 值错误 make subplots 的 specs 参数必须是维度为 3 x 1 的字典的 2D 列表 收到类型 的值 secondary y Tr
  • Rails 在模型中验证值在数组内

    我有一个表格 我可以在其中传递一个字段命名 type我想要检查它的值是否在允许类型的数组内以便任何人不得发布不允许的类型 数组看起来像 allowed types type1 type2 type3 type4 type5 type6 ty
  • 如何从视图内的 JavaScript 函数更改模型属性?

    有什么方法可以通过视图内的 javascript 函数更改我的模型属性吗 具体来说 我有一个编辑视图 需要使用以下命令访问字符串属性值 函数 SomeJSFunction var somevar 然后对 somevar 进行一些更改并将模型
  • 无法销毁多对多关系中的记录

    我是 Rails 新手 所以我确信我犯了一个简单的错误 我在两个模型之间建立了多对多关系 User and Group 它们通过连接模型连接GroupMember 这是我的模型 删除了不相关的内容 class User lt ActiveR
  • Kohana 3:经过验证的模型示例

    我找到有关模型和验证的示例和教程 我说验证 或至少大部分 应该在模型中 我同意这一点 但我无法提供任何示例或教程来说明应该如何完成此操作 谁能帮我举一个简单的例子来说明如何做到这一点 模型中的规则在哪里 验证将在哪里进行 控制器如何知道验证
  • Ember 不更新模型更改的视图

    该小提琴重新创建了入门套件 并带有可更改模型的额外按钮 http jsfiddle net UjacC 1 http jsfiddle net UjacC 1 但是 当单击 更改 时 数组会更改 但视图不会更新 为什么
  • Keras 中的 model.fit() 和 model.evaluate() 有什么区别?

    我使用 Keras 和 TensorFlow 后端来训练 CNN 模型 之间是什么model fit and model evaluate 我应该最好使用哪一种 我在用model fit 截至目前 我知道的用处model fit and m
  • 过滤 Django 管理选择框的模型结果

    我今天刚开始使用 Django 到目前为止发现做简单的事情相当困难 我现在正在努力解决的是过滤状态类型列表 StatusTypes 模型是 class StatusTypes models Model status models CharF
  • zend框架找不到模型类?

    Yall 我有一个简单的问题 这可能是一个简单的配置问题 但是 我定义了一个模型 当我尝试从控制器访问它时 失败 模型位于模型目录中 当我查看快速启动应用程序时 看来这应该可行 这是我的模型 我的控制器停止了 这是控制器代码
  • Model在MVC中的作用是什么?

    我读过一些有关 MVC 的文章 但有一点我不清楚 该模型在实际中的作用是什么 模型是否代表业务对象 或者它只是一个帮助将信息从控制器发送到视图的类 以两个业务类为例 从数据库填充数据 Class Image Property FileNam
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra

随机推荐

  • Specification中一个条件用或者表示(criteriaBuilder.or)

    Specification spec 61 root criteriaQuery criteriaBuilder gt List lt Predicate gt predicate 61 new ArrayList lt gt Predic
  • 在高德地图使用: AMap is not defined

    高德模板原版引入 xff1a lt script language 61 34 javascript 34 src 61 34 webapi amap com maps v 61 1 4 15 amp key 61 43b2dae85b7a
  • lottie动画使用

    1 安装 span class token function npm span i span class token parameter variable save span vue lottie 2 main js 中引入 span cl
  • Kotlin 开发Android app(十):Android控件绑定ViewBinding

    上一节中 xff0c 我们知道了Android的布局 xff0c 这种把界面和逻辑控制分开 xff0c 是编程里很好的分离方式 xff0c 也大大的解耦了界面和逻辑控制 xff0c 使得编程的逻辑不在和界面挂钩 有了界面的布局 xff0c
  • 在GitHub中绑定自己的域名,并实现https访问

    购买域名 由于项目的需要 xff0c 需要建一个网站来展现一些工具的信息 xff0c 就准备购买一个域名来放置自己的工具 购买域名比较简单我们先放着 xff0c 一个重要的问题是买哪个域名 选择一个好的域名是非常重要的 以下是一些选择好域名
  • 【hive】基于Qt5和libuv udp 的lan chat

    作者已经不更新了 但是很棒 在线用户列表 聊天窗口 主程序 单独的网络线程 network thread data管理关联网络管理的 程序update升级更新 和消息收到 即可
  • 两则预防crontab重复执行任务策略

    案例分析 前台异步上传文件到云端后台cron 10 usr local bin php path to upload php gt gt tmp apkqueue log 有时候上传一个文件到云端会很耗时 xff0c 一个cron还没有跑完
  • Windows10 Server 2012 2016 2019系统自动登录设置

    本教程适用于Windows Server 2008 2012 2016 2019服务器操作系统 Windows10的 xff1a 1909 1903 1809 1803及以下的版本 Windows电脑设置空密码风险很大 xff0c 设置了密
  • HAL库+环形队列(CFIFO)+Usart1+DMA数据缓存收发

    目录 一 参考文档 二 源代码 三 结构说明 四 原理讲解 五 代码讲解 4 1循环队列 CFIFO 代码 4 1 1 xff1a cifio h 4 1 1 xff1a cifio c 4 2循环队列 CFIFO 43 DMA实现USAR
  • linux登陆远程服务器的方式

    1 使用ssh设置好之后远程登录 xff1b 2 使用linux命令远程登录 xff1a 在macOS中 Linux系统同样适用 xff0c 打开终端 xff0c 输入ssh username 64 host就可以登录远程主机了 这里use
  • (计算机组成原理)Cache和主存之间的映射方式

    地址映射变换机构是将CPU送来的主存地址转换为Cache地址 由于贮存和Cache的块大小相同 xff0c 块内地址都是相对于快的起始地址的偏移量 xff08 即低位地址相同 xff09 xff0c 因此地址变换主要是主存块号与Cache块
  • 对于典型数据集,不同神经网络分类器的精确度排序

    不同神经网络分类器的精确度排序 包括如下典型数据集 xff1a MNIST CIFAR 10 CIFAR 100 STL 10 SVHN the website of the current state of the art in obje
  • CCF 202012-2 期末预测之最佳阈值 python

    CCF 202012 2 期末预测之最佳阈值 python 100 这道题对时间进行了限制 xff0c 所以要想一次遍历得出结果 xff0c 就应该思考 xff01 样例输入 安全指数011357挂科情况001111 思路详解 lt 前提
  • failed to open X11 display

    kali xff1a failed to open X11 display 在使用kali的rdeshtop进行远程桌面时 xff0c 出现了如下错误 xff1a root 64 kali span class token comment
  • python plt 画图实战

    matplotlib pyplot 画图实战 如果你想将神经网络的训练结果 xff0c 清晰地呈现出来 xff0c 不妨看看这篇文章 xff01 技术要点 xff1a 1 一张figure呈现一个横坐标对应多个纵坐标的曲线图 2 设置标题
  • 模拟退火解决TSP问题

    模拟退火解决TSP问题 模拟退火 https mp weixin qq com s src 61 11 amp timestamp 61 1633564978 amp ver 61 3359 amp signature 61 oeLMbNZ
  • Neo4j 下载安装

    Neo4j 下载安装 Windows Neo4j community 新旧版本下载 旧版本在官网上已经找不到了 xff0c 新旧版本的区别在于登录是否需要密码 Windows Neo4j community 2 0 1及2 1 0 不需要密
  • 【libuv】1.44 windows构建

    uv a 作为一个独立的工程构建的 c 工程里c符号找不到 链接不过 Build started span class token punctuation span span class token operator span class
  • SEU健康申报+离校请假

    SEU健康申报 43 离校请假 Github源码 通过对源码的学习修改 xff0c 本程序稍作调整 xff0c 将健康申报 销假和请假模块分开 xff0c 目前可用 配置 chromedriver下载方法 xff0c 将下载的chromed
  • ValueError: Please provide model inputs as a list or tuple of 2 or 3 elements: (input, target)

    ValueError Please provide model inputs as a list or tuple of 2 or 3 elements input target 报错信息 Traceback span class toke