【发布时间】:2019-01-19 16:55:50
【问题描述】:
Google Colab (python 2.7) 或我的本地系统 (python 3.6) 上的 Tensorflow 1.10 使用来自https://www.tensorflow.org/guide/keras 的示例代码 代码是
import numpy as np
import tensorflow as tf
from tensorflow import keras
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))
dataset1 = tf.data.Dataset.from_tensor_slices((data, labels))
dataset1 = dataset1.batch(32)
dataset1 = dataset1.repeat()
model = keras.Sequential()
model.add(keras.layers.Dense(64, activation='relu'))
model.add(keras.layers.Dense(64, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(dataset1, epochs=10, steps_per_epoch=30)
抛出以下错误:
Error TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type float64 of argument 'x'.
packages/tensorflow/python/framework/op_def_library.pyc in _apply_op_helper(self, op_type_name, name, **keywords)
544 "%s type %s of argument '%s'." %
545 (prefix, dtypes.as_dtype(attrs[input_arg.type_attr]).name,
--> 546 inferred_from[input_arg.type_attr]))
547
548 types = [values.dtype]
TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type float64 of argument 'x'.
【问题讨论】:
-
尝试使用
data.astype(np.float32)将您的输入数据和标签转换为float32。 -
我尝试使用 tf.cast 将所有列强制转换为 float64 和 float32,然后给出错误“列表索引超出范围”
-
我无法让数据集作为 Keras 模型的输入。在张量流 1.10
-
更改数据 = np.random.random((2000,32)) data.astype(np.float32) 错误 \site-packages\tensorflow\python\ keras\engine\training_arrays.py in fit_loop (模型,...,详细,回调,val_inputs,val_targets,val_sample_weights,shuffle,callback_metrics,initial_epoch,steps_per_epoch,validation_steps)175 indices_for_conversion_to_dense = [] 176 for i in range(len(feed)): --> 177 if issparse is not None and issparse(ins[i]) and not K.is_sparse(feed[i]): 178 indices_for_conversion_to_dense.append(i) IndexError: list index out of range
标签: python tensorflow keras dataset