代码:
from keras.applications import InceptionV3
model = InceptionV3(weights="imagenet")
shape = (None,image_size,image_size,num_channels)
x = tf.placeholder(tf.float32, shape=shape)
adv_x,grad_x = fgm(x, model, model.predict(x), y=y, targeted=True, eps=0, clip_min=-0.5, clip_max=0.5)
adv_,grad_ = batch_eval(sess, [x,y], [adv_x,grad_x], [inputs,targets], args={'batch_size': args['batch_size']})
model.predict(x)
错误:
File "/u/.../env/lib/python3.5/site-packages/keras/engine/training.py", line 1594, in predict
batch_size=batch_size, verbose=verbose)
File "/u/.../env/lib/python3.5/site-packages/keras/engine/training.py", line 1208, in _predict_loop
batches = _make_batches(samples, batch_size)
File "/u/.../env/lib/python3.5/site-packages/keras/engine/training.py", line 364, in _make_batches
num_batches = int(np.ceil(size / float(batch_size)))
TypeError: unsupported operand type(s) for /: 'Dimension' and 'float'
我可以在实际图像上使用model.predict,但最终会在tf.placeholders或tf.variables上出现此错误 任何人都可以帮我调试这个错误吗?
答案 0 :(得分:0)
Keras' Model.predict
期望输入数据的numpy数组。除非批量大小为32,否则您可能还需要包含batch_size
值。来自文档:
predict(self, x, batch_size=None, verbose=0, steps=None) method of keras.engine.training.Model instance
Generates output predictions for the input samples.
Computation is done in batches.
# Arguments
x: The input data, as a Numpy array
(or list of Numpy arrays if the model has multiple outputs).
batch_size: Integer. If unspecified, it will default to 32.
verbose: Verbosity mode, 0 or 1.
steps: Total number of steps (batches of samples)
before declaring the prediction round finished.
Ignored with the default value of `None`.
# Returns
Numpy array(s) of predictions.
# Raises
ValueError: In case of mismatch between the provided
input data and the model's expectations,