if K.image_dim_ordering() == 'th': ^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'keras.backend' has no attribute 'image_dim_orderi
时间: 2023-12-06 11:03:21 浏览: 28
这个错误是由于Keras的后端backend没有image_dim_ordering()这个属性导致的。在Keras 2.0版本中,image_dim_ordering()被替换为image_data_format()。因此,您可以将代码中的image_dim_ordering()替换为image_data_format(),并将其设置为'th'或'channels_first',或者将其设置为'channels_last'。例如,您可以这样写:
if K.image_data_format() == 'channels_first':
# code for 'th' dim ordering
else:
# code for 'tf' dim ordering
相关问题
AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering'
这个错误通常是因为 Keras 版本更新导致的。在旧版本的 Keras 中,可以使用 `keras.backend.set_image_dim_ordering()` 来设置图像的维度顺序,但在新版本的 Keras 中,这个函数已经被弃用了。
如果你使用的是 Keras 2.4.3 及以上的版本,可以使用 `tf.keras.backend.set_image_data_format()` 来代替,例如:
```
import tensorflow.keras.backend as K
K.set_image_data_format('channels_last')
```
如果你使用的是 Keras 2.3.1 及以下的版本,可以使用 `keras.backend.image_dim_ordering()` 来获取当前的图像维度顺序,例如:
```
import keras.backend as K
dim_ordering = K.image_dim_ordering()
```
如果你想使用旧版本的 Keras,可以将 Keras 更新到旧版本,或者在安装 Keras 时指定旧版本的版本号。
from django.contrib import admin from django.urls import reverse from django.utils.html import format_html from django.shortcuts import redirect from .models import Drug @admin.register(Drug) class DrugAdmin(admin.ModelAdmin): change_list_template = 'admin/drug/change_list.html' def get_urls(self): urls = super().get_urls() custom_urls = [ path('import-csv/', self.import_csv), ] return custom_urls + urls def import_csv(self, request): if request.method == 'POST': # TODO: import CSV data self.message_user(request, 'CSV data imported successfully') return redirect('..') return render(request, 'admin/drug/import_csv.html') def changelist_view(self, request, extra_context=None): if not request.GET.get('ordering'): # set default ordering request.GET = request.GET.copy() request.GET['ordering'] = 'name' return super().changelist_view(request, extra_context=extra_context) def interaction_display(self, obj): return format_html('<pre>{}</pre>', obj.interaction) interaction_display.short_description = 'Interaction' def get_actions(self, request): actions = super().get_actions(request) del actions['delete_selected'] return actions def delete_model(self, request, obj): # TODO: delete model pass def delete_selected(self, request, queryset): # TODO: delete selected models pass def get_queryset(self, request): qs = super().get_queryset(request) qs = qs.order_by('name') return qs def add_view(self, request, form_url='', extra_context=None): self.change_list_template = None return super().add_view(request, form_url=form_url, extra_context=extra_context) def change_view(self, request, object_id, form_url='', extra_context=None): self.change_list_template = None return super().change_view(request, object_id, form_url=form_url, extra_context=extra_context) def delete_view(self, request, object_id, extra_context=None): self.change_list_template = None return super().delete_view(request, object_id, extra_context=extra_context) 怎么重写ModelAdmin中的特性
可以通过在自定义的ModelAdmin中重写一些特定的方法来改变其行为,例如:
1. get_urls():返回一个包括自定义URL路由的URLconf列表。
2. changelist_view():返回一个HttpResponse对象,它将呈现显示模型对象的更改列表视图。
3. add_view():返回一个HttpResponse对象,它将呈现用于添加新模型对象的视图。
4. change_view():返回一个HttpResponse对象,它将呈现用于更改现有模型对象的视图。
5. delete_view():返回一个HttpResponse对象,它将呈现用于删除现有模型对象的视图。
6. get_queryset():返回一个查询集,该查询集包含ModelAdmin管理的模型对象。
7. get_actions():返回一个字典,其中包含ModelAdmin提供的所有批量操作。
8. delete_model():删除指定的模型对象。
9. delete_selected():批量删除指定的模型对象。
通过重写这些方法,您可以更改ModelAdmin管理的模型对象的默认行为,并添加自定义功能。