Tensorflow ValueError:不能为给定的输入类型指定'batch_size'参数
我已经使用tf.data.dataset为自动编码器模型创建了虚拟数据。我使用tensorflow-1.15.x、keras 2.3.1和numpy 1.19.5在我的GPU上运行Tensorflow ValueError:不能为给定的输入类型指定'batch_size'参数,tensorflow,keras,tensorflow-datasets,Tensorflow,Keras,Tensorflow Datasets,我已经使用tf.data.dataset为自动编码器模型创建了虚拟数据。我使用tensorflow-1.15.x、keras 2.3.1和numpy 1.19.5在我的GPU上运行 N = 5000 H = 128 W = 128 C = 2 train_data = np.random.randn(N,H,W,C) train_data = tf.convert_to_tensor(train_data) test_data = np.random.randn(500,H,W,C) t
N = 5000
H = 128
W = 128
C = 2
train_data = np.random.randn(N,H,W,C)
train_data = tf.convert_to_tensor(train_data)
test_data = np.random.randn(500,H,W,C)
test_data = tf.convert_to_tensor(test_data)
batch_size = 1
train_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_data))
train_dataset = train_dataset.batch(batch_size, drop_remainder=True)
test_dataset = tf.data.Dataset.from_tensor_slices((test_data, test_data))
test_dataset = test_dataset.batch(batch_size, drop_remainder=True)
但是在模型上拟合这些数据时,我得到了以下错误-
epochs = 5
rms = RMSprop(learning_rate=0.00002,
rho=0.9,
epsilon=1e-07)
model.compile(loss='mean_squared_error', optimizer=rms, metrics=['mean_squared_error'])
callback = tf.keras.callbacks.EarlyStopping(monitor='loss', patience=3)
logs = "logs/"
tboard_callback = tf.keras.callbacks.TensorBoard(log_dir = logs,
histogram_freq = 1)
history = model.fit(train_dataset, epochs=epochs, batch_size=batch_size, callbacks=[callback, tboard_callback],
validation_data=test_dataset)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-25-47134a802115> in <module>()
15
16 history = model.fit(train_dataset, epochs=epochs, batch_size=batch_size, callbacks=[callback, tboard_callback],
---> 17 validation_data=test_dataset)
2 frames
/tensorflow-1.15.2/python3.7/tensorflow_core/python/keras/engine/training.py in _validate_or_infer_batch_size(self, batch_size, steps, x)
1813 'The `batch_size` argument must not be specified for the given '
1814 'input type. Received input: {}, batch_size: {}'.format(
-> 1815 x, batch_size))
1816 return
1817
ValueError: The `batch_size` argument must not be specified for the given input type. Received input: <DatasetV1Adapter shapes: ((1, 128, 128, 2), (1, 128, 128, 2)), types: (tf.float64, tf.float64)>, batch_size: 1
epochs=5
rms=RMSprop(学习率=0.00002,
rho=0.9,
ε=1e-07)
compile(loss='mean_squared_error',optimizer=rms,metrics=['mean_squared_error']))
callback=tf.keras.callbacks.earlystoping(monitor='loss',patience=3)
logs=“logs/”
tboard_callback=tf.keras.callbacks.TensorBoard(log_dir=logs,
直方图(频率=1)
history=model.fit(训练数据集,epochs=epochs,批处理大小=批处理大小,回调=[callback,tboard\u callback],
验证(数据=测试数据集)
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
15
16 history=model.fit(训练数据集,epochs=epochs,批处理大小=批处理大小,回调=[callback,tboard\u callback],
--->17验证数据=测试数据集)
2帧
/tensorflow-1.15.2/python3.7/tensorflow\u core/python/keras/engine/training.py in\u validate\u或\u expert\u batch\u size(self、batch\u size、steps、x)
1813'不能为给定的指定'batch_size'参数'
1814'输入类型。收到的输入:{},批处理大小:{}。格式(
->1815 x,批量(单位尺寸)
1816年回归
1817
ValueError:不能为给定的输入类型指定'batch_size'参数。收到的输入:,批次大小:1
关于这个错误的其他问题的答案建议对训练数据集和验证数据集进行批处理,但我已经对这两个数据集进行了批处理。是什么导致了这个错误?谢谢。删除
model.fit()中的批量大小
能否尝试使用pip3安装将tensorflow升级到最新版本?升级tensorflow
?事实上,问题是我正在具有这些版本的远程服务器上运行它,无法更改库版本。对于最新的keras/tf版本,它在Google Colab上运行时没有任何错误。如果不在model.fit()中设置batch\u size
,会发生什么?还有,为什么要使用1的批处理大小?您的tf.dataset正在生成批处理,因此无需在model.fit againOkay@Frightera中设置批处理大小,我认为您是正确的。当我从model.fit()中删除批处理大小时,该错误将被删除。但它允许model.fit()中的批处理大小以及tf2中的tf.dataset。
history = model.fit(train_dataset, epochs=epochs, callbacks=[callback, tboard_callback],validation_data=test_dataset)