错误 - AttributeError:'DirectoryIterator' 对象在 keras 的自动编码器设计中没有属性 'ndim

Posted

技术标签:

【中文标题】错误 - AttributeError:\'DirectoryIterator\' 对象在 keras 的自动编码器设计中没有属性 \'ndim【英文标题】:Error- AttributeError: 'DirectoryIterator' object has no attribute 'ndim in autoencoder design in keras错误 - AttributeError:'DirectoryIterator' 对象在 keras 的自动编码器设计中没有属性 'ndim 【发布时间】:2019-03-17 16:32:58 【问题描述】:

我是 Python 3.5 的新手。我正在尝试编写一个简单的自动编码器,它将在 60 张苹果图像的数据集上进行训练,并尝试重建根中给出的图像。我使用了以下代码:

from keras.layers import Input, Dense
from keras.models import Model
import numpy as np
from PIL import Image 
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
image = Image.open('C:\Python35\Scripts\apple.jpg')
encoding_dim = 32
input_img = Input(shape=(65536,))
encoded = Dense(encoding_dim, activation='relu')(input_img)
decoded = Dense(65536, activation='sigmoid')(encoded)
autoencoder = Model(input_img, decoded)
encoder = Model(input_img, encoded)
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
decoder = Model(encoded_input, decoder_layer(encoded_input))
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
train_datagen=ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
    directory=r"C:\Users\vlsi\Desktop\train",
    batch_size=32,
    class_mode="categorical",
    shuffle=True,
    seed=42
)
autoencoder.fit(train_generator,
                epochs=2,
                batch_size=256,
                shuffle=True)
encoded_img = encoder.predict(np.array(image))
decoded_img = decoder.predict(encoded_img)
plt.imshow(decoded_img)

报错

AttributeError: 'DirectoryIterator' 对象没有属性 'ndim'

知道出了什么问题吗?

【问题讨论】:

【参考方案1】:

Keras fit 函数接受数据数组、numpy 数组,而不是生成器。你需要的函数是fit_generator。请注意,fit_generator 采用的参数略有不同,例如 steps_per_epoch 而不是 batch_size

【讨论】:

您好,请您详细说明一下。我用尝试了你的想法 @mrin9san 详细说明什么?您的评论似乎不完整。 嗨,我用 fit_generator 函数更改了程序。我现在有一个问题。似乎问题在于维度不匹配。 ***.com/questions/52790068/… @FedericoDorato 同样,这个问题是关于 keras,而不是 tf.keras,您的评论具有误导性,并不认为它们是两个不同的库 @Benson_YoureFired 仅适用于 tf.keras,此答案适用于不是同一个库的 keras。也看看答案的日期。

以上是关于错误 - AttributeError:'DirectoryIterator' 对象在 keras 的自动编码器设计中没有属性 'ndim的主要内容,如果未能解决你的问题,请参考以下文章

错误'AttributeError:'DataFrameGroupBy'对象没有属性'而数据框上的groupby功能

Python 多处理库错误(AttributeError:__exit__)

出现错误AttributeError:'_tkinter.tkapp'对象没有属性'getitems'

Python 错误:AttributeError:“模块”对象没有属性“heappush”

AttributeError:“切片”对象没有属性“标志”错误

readline() 方法给出错误:AttributeError: 'tuple' object has no attribute 'readline'