python - fit_generator 期望所有神经网络层的输入?
问题描述
对 Keras 很陌生,并构建了一个具有两个密集层的神经网络。内存中要保存的数据太多,所以我使用 fit_generator 函数,但得到错误ValueError: No data provided for "dense_2". Need data for each key in: ['dense_2']
。下面的小例子:
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
model = Sequential([
Dense(100, input_shape=(1924800,), activation='relu'),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
def generate_arrays_from_files(path, batch_size=50):
while True:
# Do things....
yield ({'dense_1_input': np.asarray(outdata)}, {'output': np.asarray(outlabels)})
model.fit_generator(generate_arrays_from_files(path), steps_per_epoch=5, epochs=10)
编辑:忘记编译行
解决方案
您不需要在输入中指定层,而且您显然不需要将数据传递到第二个密集层。请注意,最好使用 Keras 生成器,您可以像这样创建自定义生成器或使用标准生成器。
您还需要编译模型。
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
model = Sequential([
Dense(100, input_shape=(1924800,), activation='relu'),
Dense(1, activation='sigmoid')
])
optimizer = keras.optimizers.Adam(lr=1e-3)
model.compile(loss='binary_crossentropy',
optimizer=optimizer,
metrics=['accuracy'])
def generate_arrays_from_files(path, batch_size=50):
while True:
# Do things....
yield np.asarray(outdata), np.asarray(outlabels)
model.fit_generator(generate_arrays_from_files(path), steps_per_epoch=5, epochs=10)
顺便给模型输入一个向量是否正常(1924800,)
?
推荐阅读
- c# - 在接口上使用任何泛型类并避免多种类型
- c++ - 将另一个类的成员函数传递给 std::function 参数
- android - 在android中检测前台应用程序名称
- sql-server - SQL Server 2008 R2:使用 bcp 命令导出数据并将 bcp 输出存储到变量中
- github - 公共 GitHub 存储库上的生产配置
- javascript - 遍历 Array 并替换为某个值
- azure-iot-edge - 是否支持在 Suse Linux Enterprise Server 12 上轻松安装运行时?
- gmail - 使用 Postman 发送 Gmail api
- oracle - sql占位符行
- jquery - 数据表视图未正确刷新 jQuery ajax MVC 调用