8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

tensorflow keras Model.fit 返回:ValueError:无法识别的数据类型

Mehmet Erdoğdu 2月前

52 0

我正在尝试训练一个带有两个输入的 keras 模型:一个图像部分(即 tf.data.Dataset)和一个由 pd.DataFrame 表示的正常部分(来自 tensorflow.keras.optimizers import Adamopt = Adam(

我正在尝试用两个输入来训练一个 keras 模型:一个图像部分,即 , tf.data.Dataset 以及一个由 表示的正常部分 pd.DataFrame

from tensorflow.keras.optimizers import Adam
opt = Adam(learning_rate=1e-3, decay=1e-3 / 200)

model.compile(loss="mean_absolute_percentage_error", optimizer=opt)

model.fit(
    x=[df.loc[:, df.columns != 'target'], ds.batch(8)], y=df["target"],
    epochs=200)

我试图拟合模型,但得到了 ValueError

ValueError: Unrecognized data type: x=[...][401059 rows x 52 columns]
, <_BatchDataset element_spec=(TensorSpec(shape=(None, 32, 256, 256, 3), 
dtype=tf.float32, name=None), 
TensorSpec(shape=(None, 32, 256, 256, 3), dtype=tf.float32, name=None))>] (of type <class 'list'>)
帖子版权声明 1、本帖标题:tensorflow keras Model.fit 返回:ValueError:无法识别的数据类型
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Mehmet Erdoğdu在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 问题是tensoflow压缩和重新格式化数据集时出错了

    def post_zip_process(example1, example2):
        reshaped_input = tf.transpose(example1[0], [0, 1, 2 ,-1])
        reshaped_input = reshaped_input[0, :, :, :]
        print(reshaped_input.shape)
        return (reshaped_input, example2[0]), example1[1]
    
  • 我使用预训练模型(EfficientNetB0)训练了 CNN,并使用我的数据对其进行了改进。(不要混淆,我是使用 TPU VM 进行的,不使用它时会出现同样的错误)这就是我所做的……

    我使用预先训练的模型(EfficientNetB0)训练了 CNN,并使用我的数据对其进行了改进。(不要混淆,我是使用 TPU VM 进行的,不使用它时也会出现同样的错误)

    我是这样做的:

    `with strategy.scope():
        base_model = EfficientNetB0(include_top=False, input_shape=(224, 224, 3), weights='imagenet')
        base_model.trainable = False
    
        model = Sequential([
            base_model,
            GlobalAveragePooling2D(),
            Dense(64, activation='relu'),
            Dropout(0.5),
            Dense(2, activation='softmax')
        ])
    
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
    
    steps_per_epoch = len(train_data) // 32
    validation_steps = len(val_data) // 32
    
    history = model.fit(
        train_dataset,
        steps_per_epoch=steps_per_epoch,
        validation_data=val_dataset,
        validation_steps=validation_steps,
        epochs=1
    )` 
    

    现在有趣的是,该模型使用 val_loss, val_acc = model.evaluate(val_dataset, steps=validation_steps)

    在同一个笔记本中使用该模型是可行的!

    predictions = model.predict(prepared_image)
    predicted_class = np.argmax(predictions, axis=1)
    

    现在不起作用的关键部分是:

    model.save('/kaggle/working/my_model.keras')
    

    从技术上讲,这样做也是可行的,但是在加载模型时:

    model = tf.keras.models.load_model(model_path)
    

    我立即收到此错误:

    ValueError: Layer "dense" expects 1 input(s), but it received 2 input tensors. Inputs 
    received: [<KerasTensor shape=(None, 7, 7, 1280), dtype=float32, sparse=False, 
    name=keras_tensor_504>, <KerasTensor shape=(None, 7, 7, 1280), dtype=float32, 
    sparse=False, name=keras_tensor_505>]
    

    只是加载模型,没有其他的。是的,使用 kaggle 的模型上传然后复制路径,路径都是正确的。

    我怎么 不能加载模型呢 ,即使 我可以在训练它进行预测的笔记本中使用它

  • 我实际上不记得它什么时候开始这样做,所以没有任何线索可以解释导致这个 errorbtn 函数的原因是从 localstorage 获取信息,然后创建一个包含我需要的信息的小卡片...

    我实际上不记得它是什么时候开始出现这种情况的,所以对于导致此错误的原因没有任何线索

    btn 功能是从 localstorage 获取信息,然后创建一个包含我需要显示的信息的小卡片

    这是我的一些代码

    JS

            if (error < 1) {
                let btn = document.getElementById('submit');
                btn.addEventListener('click',  function (event){
                    event.preventDefault()
                    const c = {
                        fond: document.getElementById("fond").value,
                        opis: document.getElementById("opis").value,
                        dela: document.getElementById("dela").value,
                        stdelo: document.getElementById("deloold").value,
                        fami: document.getElementById("surn").value,
                        name: document.getElementById("imya").value,
                        prime: document.getElementById("primechan").value,
                        bday: document.getElementById("bday").value,
                        bmonth: document.getElementById("bmonth").value,
                        byear: document.getElementById("byear").value,
                        ngorod: document.getElementById("gorod").value,
                        kolvolist: document.getElementById("kolvolist").value,
                        category: document.getElementById("zvan").value,
                        nprimechan: document.getElementById("primechan").value
                    };
                    const index = JSON.parse(localStorage.getItem('userIndex')) || 1;
                    localStorage.setItem('userIndex', index + 1);
                    localStorage.setItem(`user${index}`, JSON.stringify(c));
    
                    let dan = localStorage.getItem(`user${index}`);
                    dan = JSON.parse(dan)
    
                   Object.keys(dan).map(function () {
                       console.log(dan)
                        let surnam = `${dan["fami"]}`
                        let name = `${dan["name"]}`
                        let otchest = `${dan["prime"]}`
                        let fond = `${dan["fond"]}`
                        let opis = `${dan["opis"]}`
                        let dela = `${dan["dela"]}`
                        let data = `${dan['bday']}.${dan["bmonth"]}.${dan['byear']}`
    
                        let product = document.createElement('div')
                        product.classList.add(`user${index}`)
                        product.innerHTML =
                            `<div class="product">
                                <p class="product__title">${surnam}</p>
                                <p class="product__title">${otchest}</p>
                                 <p class="product__title">${name}</p>
                                <p>Дата рождения: ${data}</p>
                                <p>Номер фонда: ${fond}</p>
                                <p>Номер описи: ${opis}</p>
                                <p>Номер дела: ${dela}</p>
                            </div>`
    
                        document.getElementById("formADD").reset();
                      const myData = new FormData(document.querySelector('.oknodel').append(product));
                        console.log(myData)
                    });
                });
            }
    
  • 我正在探索用于 NER 任务的 CRF。我最近才知道 CRF 层存在于 Tensorflow Addons 中,但它已存档至 2024 年 5 月。我想知道这些 Keras、Tensorflow、K...

    我正在探索用于 NER 任务的 CRF。我最近得知 Tensorflow Addons 中存在 CRF 层,但它已存档至 2024 年 5 月。我想知道这些 Keras、Tensorflow、Keras-NLP 中是否有该层的最新实现?

  • t7e 2月前 0 只看Ta
    引用 6

    我观察到以下情况:var o = {}; // 空 JS 对象var a = []; // 空 JS 数组o.myproperty = \'I am property\';a.push(\'I am array element\');alert(o['myproperty']); // alerts \'I am

    我观察到以下情况:

    var o = {}; // empty JS object
    var a = []; // empty JS array
    
    o.myproperty = "I am property";
    a.push("I am array element");
    
    alert(o['myproperty']); // alerts "I am property"
    alert(o.myproperty); // alerts "I am property"
    alert(a[0]); // alerts "I am array element"
    alert(a['0']); // alerts "I am array element"
    
    /* Of course, accessing an array element using dot notation (e.g. a.0) would cause a
       SyntaxError: Unexpected number (in JavaScript variable names cannot begin with numbers.)
    */
    

    还:

    'myproperty' in o // evaluates to true
    0 in a // true
    '0' in a // true
    
    delete o.myproperty; // true, o is now empty
    delete o['myproperty']; // true, o is now empty
    delete a[0]; // true, a contains now 1 undefined element
    delete a['0']; // true, a contains now 1 undefined element
    

    似乎向数组中添加元素实际上会在数组对象上创建一个编号属性,之后会使用该属性通过引用访问元素。但有些操作对这些 数组元素属性的作用 完全像对普通对象属性的作用一样(例如上面的删除)。所以...

    TL;DR ... javascript 数组元素是否通过看不见的编号数组对象属性通过引用访问?

    编辑 似乎如此: 为什么在数组迭代中使用'for...in'是一个坏主意?

  • 几乎 Array an 唯一添加的 Object 就是 .length 属性,以及一些特定于数组的方法,例如 .push 。实际上,an Array 只是一个 Object 。真正使它可用作数组的是所述 .length 参数;它允许您 有序 方式 迭代 属性 for (i = 0; i < arr.length; i++) .length 当您将新元素添加到数组中或执行其他特定于数组的操作时,属性会更新 .push() 。而这实际上就是使对象作为索引有序列表工作所需的全部内容。

  • 要使访问器值成为 数组中的 索引

    • 为非负整数( 0 , 1 , 100 , 200 );
    • 如果转换为数字(从 string ),它应该是非负整数('0','1.000')

    例如:

    a['100'] // as index a[100]
    a['0']   // as index a[0]
    a[1.00]  // as index a[1]
    

    在所有其他情况下,访问器都被视为 数组对象的 属性

    a[-1]       // as a property a['-1']
    a['myProp'] // as a property a['myProp']
    

    数组与常规对象的区别在于:使用索引时,属性 length 会自动更新。应该 length 始终比最高索引大 1。

  • G.M. 2月前 0 只看Ta
    引用 9

    但是“视为索引”是什么意思?索引属性和其他属性之间有什么区别?可能就是 @deceze 在他的回答中所说的

  • @Nonorios \'视为索引\' 表示设置值将根据最高索引增加长度。设置常规属性时,长度不会自动更新。

  • 数组是对象,最简单的理解方式是 [] instanceof Object 返回 true .

    是的,数组元素通过引用访问,方式与对象属性相同。

    当你删除一个对象的一个​​属性时,你实际上是将该属性设置为未定义,因此对于对象或数组来说也是一样的。

返回
作者最近主题: