当前位置: 首页 > 知识库问答 >
问题:

keras训练模型时的TypeError和ValueError

林英锐
2023-03-14
W0617 03:18:36.956070 139928036104064 deprecation_wrapper.py:119] From
W0617 03:18:36.965062 139928036104064 deprecation_wrapper.py:119] From
W0617 03:18:37.005445 139928036104064 deprecation_wrapper.py:119] From

/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:174:不推荐使用名称tf.get_default_session。请改用tf.compat.v1.get_default_session。

W0617 03:18:37.006534 139928036104064 deprecation_wrapper.py:119] From

/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:181:不推荐使用名称tf.configproto。请改用tf.compat.v1.ConfigProto。

W0617 03:18:39.945574 139928036104064 deprecation_wrapper.py:119] From

/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1834:不推荐使用名称tf.nn.fused_batch_norm。请改用tf.compat.v1.nn.fused_batch_norm。

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:19: UserWarning: Update your `Model` call to the Keras 2 API:

/usr/local/lib/python3.6/dist-packages/keras/optimizers.py:790中的模型(inputs=tensor(“in...,outputs=tensor(”ac...)W0617 03:18:40.237022 139928036104064 deprecation_wrapper.py:119):不推荐使用名称tf.train.optimizer。请改用tf.compat.v1.train.optimizer。

W0617 03:18:40.366632 139928036104064 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_grad.py:1250:

add_dispatch_support...wrapper(来自tensorflow.python.ops.array_ops)是不推荐的,将在未来的版本中删除。更新说明:使用TF.WHERE in 2.0,它具有与NP相同的广播规则,其中_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________8)0___________________________________________________激活_________________________________________(激活)(无,28,28,9)0_______________________________________________________________________________________________________________________________________________________________________________________________________====================总参数:2,438,364个可训练参数:2,438,238个不可训练参数:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

7 frames
TypeError: Non-valid index or slice: [1484419, 2231123, 3092786, 1496830, 493122, 736949, 1199629, 328357, 931000, 2946100, 415877,

1421951,3421223,2238167,2940723,1437219,1839514,2746665,3359532,3268348]

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tables/leaf.py in _point_selection(self, key)
    579             # handle negative indices
    580             idx = coords < 0
--> 581             coords[idx] = (coords + self.shape)[idx]
    582 
    583             # bounds check

ValueError: operands could not be broadcast together with shapes (20,) (4,)

训练数据的形状为(3450000,28,28,1),训练标签为(3450000,345)。我以前训练过类似的模型,但从未遇到过这样的错误,如无效索引片和操作数不能一起广播。我正在使用谷歌Colab进行培训。培训代码为:

def create_model():
  inp = Input((28,28,1))
  conv1 = Conv2D(36,(2,2),padding="same",kernel_initializer="glorot_normal")(inp)
  batch1 = BatchNormalization()(conv1)
  act1 = Activation("relu")(batch1)

  conv2 = Conv2D(18,(2,2),padding="same",kernel_initializer="glorot_normal")(act1)
  batch2 = BatchNormalization()(conv2)
  act2 = Activation("relu")(batch2)

  conv3 = Conv2D(9,(2,2),padding="same",kernel_initializer="glorot_normal")(act2)
  batch3 = BatchNormalization()(conv3)
  act3 = Activation("relu")(batch3)

  out = Flatten()(act3)
  out = Dense(345)(out)
  out = Activation("softmax")(out)

  model = Model(input = inp, output = out)
  adm = optimizers.Adagrad(lr=0.02)
  model.compile(optimizer=adm,loss="categorical_crossentropy",metrics=['accuracy'])
  model.summary()

  return model

if __name__ == "__main__":
  model = create_model()
  history = model.fit(x = train_X, y = train_Y, batch_size = 20, epochs = 100, validation_data = (eval_X, eval_Y))

共有1个答案

慕容耘豪
2023-03-14

将此添加到代码的开始,指定TensorFlow版本,因为colab中的默认版本是TensorFlow V2.0

%TensorFlow_Version1.x

导入tensorflow作为tf

 类似资料:
  • 问题内容: 我想知道是否有可能保存经过部分训练的Keras模型并在再次加载模型后继续进行训练。 这样做的原因是,将来我将拥有更多的训练数据,并且我不想再次对整个模型进行训练。 我正在使用的功能是: 编辑1:添加了完全正常的示例 对于10个纪元后的第一个数据集,最后一个纪元的损失将为0.0748,精度为0.9863。 保存,删除和重新加载模型后,第二个数据集上训练的模型的损失和准确性分别为0.171

  • 本文向大家介绍Keras使用ImageNet上预训练的模型方式,包括了Keras使用ImageNet上预训练的模型方式的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧! 在以上代码中,我们首先import各种模型对应的module,然后load模型,并用ImageNet的参数初始化模型的参数。 如果不想使用ImageNet上预训练到的权重初始话模型,可以将各语句的中

  • 我的代码是: 我的数据如下: 我的结果是: 两个时代后它就卡在那里了。我能做些什么来防止它这么快卡住?

  • 问题内容: 我有一个训练了40个时代的模型。我为每个纪元保留了检查点,并且还用保存了模型。培训代码为: 但是,当我加载模型并尝试再次对其进行训练时,它会像以前从未进行过训练一样从头开始。损失不是从上一次训练开始的。 使我感到困惑的是,当我加载模型并重新定义模型结构并使用时,效果很好。因此,我相信模型权重已加载: 但是,当我继续进行此训练时,损失与初始阶段一样高: 我在这里和这里搜索并找到了一些保存

  • 本文向大家介绍keras中模型训练class_weight,sample_weight区别说明,包括了keras中模型训练class_weight,sample_weight区别说明的使用技巧和注意事项,需要的朋友参考一下 keras 中fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, v

  • 在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱子来处理。如果你实践过前几章的一些示例,你惊奇的发现你可以优化回归系统,改进数字图像的分类器,你甚至可以零基础搭建一个垃圾邮件的分类器,但是你却对它们内部的工作流程一无所知。事实上,许多场合你都不需要知道这些黑箱子的内部有什么,干了什么。 然而,如果你对其内部的工作流程有一定了解的话,当面对一个机器学习任务时候,这些理论可以帮助你快速的找到恰