【问题标题】:AttributeError when training CNN 1D with Python Keras使用 Python Keras 训练 CNN 1D 时出现 AttributeError
【发布时间】:2019-04-15 00:18:41
【问题描述】:

我试图构建一个 CNN 1D,但解释器告诉我:

AttributeError: 'ProgbarLogger' 对象没有属性 'log_values'

这里是sn-p的代码:

model = Sequential()
model.add(Conv1D(200, 20, activation='relu', padding='same',input_shape=(1154,1024))
print(model.summary())
model.compile(optimizer='adam',
          loss='sparse_categorical_crossentropy',
          metrics=['accuracy'])
history=model.fit(X, y,batch_size=10, epochs=25,validation_split=0.7)

这是错误:

Layer (type)                 Output Shape              Param #   
=================================================================
conv1d_1 (Conv1D)            (None, 1154, 200)         4096200   
=================================================================
Total params: 4,096,200
Trainable params: 4,096,200
Non-trainable params: 0
_________________________________________________________________
None

Train on 0 samples, validate on 1 samples
Epoch 1/25
Traceback (most recent call last):
  File "binary_classification.py", line 59, in <module>
    history=model.fit(X, y,batch_size=10, epochs=25,validation_split=0.7)
  File "/home/isabella/.local/lib/python3.6/site-packages/keras/engine/training.py",
line 1039, in fit
    validation_steps=validation_steps)
  File "/home/isabella/.local/lib/python3.6/site-packages/keras/engine/training_arrays.py",
line 217, in fit_loop
    callbacks.on_epoch_end(epoch, epoch_logs)
  File "/home/isabella/.local/lib/python3.6/site-packages/keras/callbacks.py",
line 79, in on_epoch_end
    callback.on_epoch_end(epoch, logs)
  File "/home/isabella/.local/lib/python3.6/site-packages/keras/callbacks.py",
line 338, in on_epoch_end
    self.progbar.update(self.seen, self.log_values)
AttributeError: 'ProgbarLogger' object has no attribute 'log_values'

X shape is :(1,1154,1024),
y shape is :(1,1154, 1 )

【问题讨论】:

  • 这是哪个版本? pip install --upgrade keras 确保您使用的是最新版本。
  • 完成了,所以我目前正在使用最新版本的 Keras。错误仍然存​​在...

标签: python machine-learning keras progress-bar conv-neural-network


【解决方案1】:

如果你仔细看,你会在堆栈跟踪输出之前看到这一行:

Train on 0 samples, validate on 1 samples

没有训练数据!为什么?那是因为您已将validation_split 设置为0.7,所以首先将X(和y)中的70% 的数据点放在一边进行验证,剩下的30% 用于训练。 X 中的数据点数量可能少于 4,因此其 30% 将少于 1,这意味着零数据点仍用于训练。要么使用超过 4 个数据点,要么删除 validation_split 参数(或降低它,以便至少有一个样本用于训练)。

【讨论】:

  • 非常感谢,我没看到。但这很奇怪,因为我有 1154 个样本,而不是 1 个。
  • @isabella 我不这么认为。在堆栈跟踪之后,您可以看到:X shape is :(1,1154,1024), 这意味着您有 一个样本,形状为 (1154, 1024)(即 1154 个长度为 1024 的时间步长作为一个样本)。
猜你喜欢
  • 2019-01-25
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2018-11-20
  • 2019-09-22
相关资源
最近更新 更多