Keras 模型错误
Posted
技术标签:
【中文标题】Keras 模型错误【英文标题】:Keras model errors 【发布时间】:2021-07-02 07:25:14 【问题描述】:我是机器学习的新手,已经被这个错误困扰了一段时间:
Traceback(最近一次调用最后一次): 文件“model1.py”,第 77 行,在 model.fit(train_generator, _method_wrapper 中的文件“C:\Python38\lib\site-packages\tensorflow\python\keras\engine\training.py”,第 108 行 返回方法(自我,*args,**kwargs) 文件“C:\Python38\lib\site-packages\tensorflow\python\keras\engine\training.py”,第 1098 行,适合 tmp_logs = train_function(迭代器) 调用中的文件“C:\Python38\lib\site-packages\tensorflow\python\eager\def_function.py”,第 780 行 结果 = self._call(*args, **kwds) _call 中的文件“C:\Python38\lib\site-packages\tensorflow\python\eager\def_function.py”,第 840 行 return self._stateless_fn(*args, **kwds) 调用中的文件“C:\Python38\lib\site-packages\tensorflow\python\eager\function.py”,第 2829 行 return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access _filtered_call 中的文件“C:\Python38\lib\site-packages\tensorflow\python\eager\function.py”,第 1843 行 返回 self._call_flat( _call_flat 中的文件“C:\Python38\lib\site-packages\tensorflow\python\eager\function.py”,第 1923 行 返回 self._build_call_outputs(self._inference_function.call( 文件“C:\Python38\lib\site-packages\tensorflow\python\eager\function.py”,第 545 行,调用中 输出=执行。执行( 文件“C:\Python38\lib\site-packages\tensorflow\python\eager\execute.py”,第 59 行,在 quick_execute 张量 = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, tensorflow.python.framework.errors_impl.NotFoundError:没有算法有效! [[nodesequential/conv2d/Conv2D(定义在model1.py:77)]] [Op:__inference_train_function_806]
我使用的是 CUDA 10.1/Cudnn 8.05,它适用于我尝试过的其他卷积项目。只需在此处切换到基本的 VGG16 模型,我就可以运行程序而没有任何准确度提升,所以我不确定问题出在我的 GPU 库、张量维度错误还是初始化失败。
import tensorflow as tf
import tensorflow_datasets as tfds
# Helper libraries
import os
import numpy as np
import matplotlib.pyplot as plt
import keras
from keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras import layers
batch_size=10
train_dir="C:/draw/imagenet-object-localization-challenge/ILSVRC/Data/CLS-LOC/train"
validation_dir="C:/draw/imagenet-object-localization-challenge/ILSVRC/Data/CLS-LOC/val"
train_datagen = ImageDataGenerator(
rescale=1./255,
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
validation_split=0.2,
fill_mode='nearest')
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(224, 224),
batch_size=batch_size,
class_mode='categorical')
validation_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(224, 224),
batch_size=batch_size,
class_mode='categorical')
model = tf.keras.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64))
model.add(layers.Dense(1000, activation='softmax'))
model.compile(optimizer='adam',
loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
num_epochs=20
steps_per_epoch=10000
val_steps=10
model.fit(train_generator,
epochs=num_epochs,
steps_per_epoch = steps_per_epoch,
validation_data=validation_generator,
validation_steps=val_steps)
提前感谢您提供的有关如何修复此错误的任何建议。
【问题讨论】:
请以文本格式添加错误信息。 【参考方案1】:您的问题是在 flow_from_directory 中您需要指定参数子集。对于 train_generator,将子集指定为子集='training'。在validation_generator 中将其指定为subset='validation'。
【讨论】:
谢谢,我错过了这个错误。不过,“未找到算法”问题似乎有所不同。 尝试删除 model.compile 损失中的 from_logits=True 这个修复解决了它,以及其他两个:添加“color_mode=grayscale”和一个专门的 gpu 内存增长代码块,根据安装的 cuda/cudnn 版本而变化。以上是关于Keras 模型错误的主要内容,如果未能解决你的问题,请参考以下文章