xs = tf.keras.Input([None,None])
conv_3 = tf.keras.layers.Conv2D(12, [3, 64],activation=tf.nn.relu)(xs)
conv_5 = tf.keras.layers.Conv2D(12, [5, 64],activation=tf.nn.relu)(conv_3)
conv_7 = tf.keras.layers.Conv2D(12, [7, 64],activation=tf.nn.relu)(conv_5)
conv_3_mean = tf.keras.layers.Flatten(tf.reduce_max(conv_3, axis=1, keep_dims=True))
conv_5_mean = tf.keras.layers.Flatten(tf.reduce_max(conv_5, axis=1, keep_dims=True))
conv_7_mean = tf.keras.layers.Flatten(tf.reduce_max(conv_7, axis=1, keep_dims=True))
flatten = tf.concat([conv_3_mean, conv_5_mean, conv_7_mean], axis=1)
fc_1 = tf.keras.layers.Dense(128,activation=tf.nn.relu)(flatten)
logits = tf.keras.layers.Dense(5,activation=tf.nn.softmax)(fc_1)
model = tf.keras.Model(inputs=xs, outputs=logits)
错误如下:
ValueError Traceback (most recent call last)
<ipython-input-254-34baec62c8bc> in <module>
1 xs = tf.keras.Input([None,None])
2
----> 3 conv_3 = tf.keras.layers.Conv2D(12, [3, 64],activation=tf.nn.relu)(xs)
4
5 conv_5 = tf.keras.layers.Conv2D(12, [5, 64],activation=tf.nn.relu)(conv_3)
D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in __call__(self, *args, **kwargs)
949 # >> model = tf.keras.Model(inputs, outputs)
950 if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
--> 951 return self._functional_construction_call(inputs, args, kwargs,
952 input_list)
953
D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
1088 layer=self, inputs=inputs, build_graph=True, training=training_value):
1089 # Check input assumptions set after layer building, e.g. input shape.
-> 1090 outputs = self._keras_tensor_symbolic_call(
1091 inputs, input_masks, args, kwargs)
1092
D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _keras_tensor_symbolic_call(self, inputs, input_masks, args, kwargs)
820 return nest.map_structure(keras_tensor.KerasTensor, output_signature)
821 else:
--> 822 return self._infer_output_signature(inputs, args, kwargs, input_masks)
823
824 def _infer_output_signature(self, inputs, args, kwargs, input_masks):
D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
860 # overridden).
861 # TODO(kaftan): do we maybe_build here, or have we already done it?
--> 862 self._maybe_build(inputs)
863 outputs = call_fn(inputs, *args, **kwargs)
864
D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in _maybe_build(self, inputs)
2682 # Check input assumptions set before layer building, e.g. input rank.
2683 if not self.built:
-> 2684 input_spec.assert_input_compatibility(
2685 self.input_spec, inputs, self.name)
2686 input_list = nest.flatten(inputs)
D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\input_spec.py in assert_input_compatibility(input_spec, inputs, layer_name)
232 ndim = x.shape.rank
233 if ndim is not None and ndim < spec.min_ndim:
--> 234 raise ValueError('Input ' + str(input_index) + ' of layer ' +
235 layer_name + ' is incompatible with the layer: '
236 ': expected min_ndim=' + str(spec.min_ndim) +
ValueError: Input 0 of layer conv2d_46 is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, None, None)
请问,哪里错了,我该 如何修改?