请选择 进入手机版 | 继续访问电脑版

大蛇智能

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 281|回复: 4

code_08_densenet121程序运行的问题

[复制链接]

1

主题

4

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2020-12-30 15:03:49 | 显示全部楼层 |阅读模式
C:\Users\78384\anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py:1844: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.
  warnings.warn('`Model.fit_generator` is deprecated and '
Traceback (most recent call last):
  File "E:/深度学习/Machine-Vision-for-TensorFlow-2.x--master/code/code_08_densenet121.py", line 251, in <module>
    H = model_train.fit_generator(
  File "C:\Users\78384\anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1847, in fit_generator
    return self.fit(
  File "C:\Users\78384\anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1050, in fit
    data_handler = data_adapter.DataHandler(
  File "C:\Users\78384\anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 1117, in __init__
    dataset = dataset.map(_make_class_weight_map_fn(class_weight))
  File "C:\Users\78384\anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 1278, in _make_class_weight_map_fn
    class_ids = list(sorted(class_weight.keys()))
AttributeError: 'list' object has no attribute 'keys'

定位是在执行这句
H = model_train.fit_generator(
    generator=train_generator,  # 训练数据集生成器
    epochs=epochs,  # 训练次数
    validation_data=validation_generator,  # 测试数据集生成器
    callbacks=callbacks,  # 回调函数列表
    class_weight=class_weights  #类别比例
)的问题,版主大大能帮我看看怎么解决吗?小白一个,多谢啦。

回复

使用道具 举报

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2021-1-7 11:08:59 | 显示全部楼层
雖然我不是版主

這個問題可以用TF2.0去執行即可解決

不過還是希望版主可以給出更高版本的修改解法
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-1-28 10:12:48 | 显示全部楼层
tf2.3会出这个问题,改成tf2.3以下版本即可,tf2.3操作的是传进去的列表,而不是列表里的字典,所以报错了
回复

使用道具 举报

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2021-2-7 21:17:56 | 显示全部楼层
这个问题我也有。我没有改tf2.3以下版本,但是我想先运行一下,但是我把class_weights这行注释掉,他就会报这样的错,家人们可否帮我看看。。
H = newModel.fit_generator(
    generator=train_generator,  # 训练数据集生成器
    epochs=10,  # 训练次数
    validation_data=test_generator,  # 测试数据集生成器
    callbacks=callbacks  # 回调函数列表
#     class_weight=class_weights  #类别比例
)

Epoch 1/10
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-63-5746634e6ffd> in <module>
      4     epochs=10,  # 训练次数
      5     validation_data=test_generator,  # 测试数据集生成器
----> 6     callbacks=callbacks  # 回调函数列表
      7 #     class_weight=class_weights  #类别比例
      8 )

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
    322               'in a future version' if date is None else ('after %s' % date),
    323               instructions)
--> 324       return func(*args, **kwargs)
    325     return tf_decorator.make_decorator(
    326         func, new_func, 'deprecated',

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   1827         use_multiprocessing=use_multiprocessing,
   1828         shuffle=shuffle,
-> 1829         initial_epoch=initial_epoch)
   1830
   1831   @deprecation.deprecated(

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self, *args, **kwargs)
    106   def _method_wrapper(self, *args, **kwargs):
    107     if not self._in_multi_worker_mode():  # pylint: disable=protected-access
--> 108       return method(self, *args, **kwargs)
    109
    110     # Running inside `run_distribute_coordinator` already.

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
   1096                 batch_size=batch_size):
   1097               callbacks.on_train_batch_begin(step)
-> 1098               tmp_logs = train_function(iterator)
   1099               if data_handler.should_sync:
   1100                 context.async_wait()

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in __call__(self, *args, **kwds)
    778       else:
    779         compiler = "nonXla"
--> 780         result = self._call(*args, **kwds)
    781
    782       new_tracing_count = self._get_tracing_count()

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds)
    805       # In this case we have created variables on the first call, so we run the
    806       # defunned version which is guaranteed to never create variables.
--> 807       return self._stateless_fn(*args, **kwds)  # pylint: disable=not-callable
    808     elif self._stateful_fn is not None:
    809       # Release the lock early so that multiple threads can perform the call

TypeError: 'NoneType' object is not callable
回复

使用道具 举报

143

主题

242

帖子

759

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
759
发表于 2021-3-1 09:20:31 | 显示全部楼层
产生原因:

传入的class_weights为多个字典组成的列表,我看了下tf2.3的源码,源码中直接对这个列表进行了keys(),而不是列表中的字典,列表不能执行keys()这个获取字典key值的方法所以报错。
在2.0,2.1下没有出现问题的原因我目前不清楚,没有找到2.1的源码不了解他的处理过程。
解决方法:
我是这样理解的,class_weights的目的是为了增加样本较少类别的权重,而且现在只能传入字典不能传入列表,所以将之前计算好的每一个类型在全部数据中的占比保存到字典中,key为类别,value为总占比。

解决代码:
class_dict={}
sum=0
for i in class_weights:
class_dict[sum]=i[0]
sum+=1
H = model_train.fit_generator(
generator=train_generator, # 训练数据集生成器
epochs=epochs, # 训练次数
validation_data=validation_generator, # 测试数据集生成器
callbacks=callbacks, # 回调函数列表
class_weight=class_dict #类别比例
)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|大蛇智能 ( 京ICP备18026897号-1 )

GMT+8, 2021-4-18 01:38 , Processed in 0.022748 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表