tensorflow - 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'
解决方案
推荐阅读
- c++ - 改变 boost::combine 的结果
- pyarrow - 如何使用 pyarrow.read_csv 添加/更改列名?
- python - 面临 Python 到 MYSQL 插入的问题
- symfony - 如何为任何路由设置控制器以获取所有控制器中的基本对象
- date - 限制日期超过 60 天
- jenkins - 在 Jenkins Pipeline 中扫描 gradle Hello world 项目
- reactjs - React bootstrap Carousels 组件无法正常工作并出现错误
- react-native - 反应原生不会填满ios(移动)上的窗口
- java - HttpClientException:请求失败
- angular - 通过使用角度路由未选择默认路由