首页 > 解决方案 > AutoKeras:TypeError:“NoneType”和“int”的实例之间不支持“<”

问题描述

在 Autkeras 模型中出现错误,而在 keras 模型中使用相同的数据

数据集示例

image                  label
train/class0/3.jpg      0
train/class1/2.jpg      1
train/class1/6.jpg      1
train/class1/4.jpg      1
train/class0/7.jpg      0

加载函数

def load(image_path,label):
  img = tf.io.read_file(image_path)
  img = tf.image.decode_jpeg(img, channels=3)
  #img = tf.image.convert_image_dtype(img, tf.float32)
  img = tf.cast(img, tf.float32) / 255.0
  label = tf.cast(label, tf.int32)
  return img, label

加载数据

 bs=2
 train_ds = tf.data.Dataset.from_tensor_slices((train_df.image,train_df.label)).map(load).batch(bs)

keras模型

model = tf.keras.Sequential([
  layers.InputLayer((224,224,3)),                         
  layers.Conv2D(32, 3, activation='relu'),
  layers.MaxPooling2D(),
  layers.Conv2D(32, 3, activation='relu'),
  layers.MaxPooling2D(),
  layers.Conv2D(32, 3, activation='relu'),
  layers.MaxPooling2D(),
  layers.Flatten(),
  layers.Dense(128, activation='relu'),
  layers.Dense(1,activation='sigmoid')
])

训练 keras 模型

model.compile(optimizer='adam',loss=tf.losses.BinaryCrossentropy(),metrics=['accuracy'])
model.fit(train_ds,epochs=1)

AutoKeras 模型

import autokeras as ak
clf = ak.ImageClassifier(overwrite=False, max_trials=1)
clf.fit(train_ds, epochs=1)

autokeras模型中的错误日志

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hypermodel.py", line 104, in build
    model = self.hypermodel.build(hp)
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hypermodel.py", line 64, in _build_wrapper
    return self._build(hp, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/autokeras/graph.py", line 250, in build
    outputs = block.build(hp, inputs=temp_inputs)
  File "/usr/local/lib/python3.7/dist-packages/autokeras/engine/block.py", line 38, in _build_wrapper
    return super()._build_wrapper(hp, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hypermodel.py", line 64, in _build_wrapper
    return self._build(hp, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/autokeras/blocks/wrapper.py", line 108, in build
    output_node = self._build_block(hp, output_node, block_type)
  File "/usr/local/lib/python3.7/dist-packages/autokeras/blocks/wrapper.py", line 77, in _build_block
    return basic.ResNetBlock().build(hp, output_node)
  File "/usr/local/lib/python3.7/dist-packages/autokeras/engine/block.py", line 38, in _build_wrapper
    return super()._build_wrapper(hp, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hypermodel.py", line 64, in _build_wrapper
    return self._build(hp, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/autokeras/blocks/basic.py", line 688, in build
    if input_node.shape[1] < min_size or input_node.shape[2] < min_size:
TypeError: '<' not supported between instances of 'NoneType' and 'int'

标签: tensorflowkerasauto-keras

解决方案


推荐阅读