TypeError: 'Mul' Op 的输入 'y' 的类型 float32 与参数 'x' 的类型 float64 不匹配

Int*_*ion 5 python dataset keras tensorflow

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)
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

    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'.
Run Code Online (Sandbox Code Playgroud)

Xia*_*gyu 4

model我遇到了同样的问题,我假设is中使用的默认数据类型是is float32,并保留该类型。要修复它,只需更改您的代码:numpyfloat64from_tensor_slices

data = np.random.random((1000,32))
labels = np.random.random((1000,10))
Run Code Online (Sandbox Code Playgroud)

data = np.random.random((1000,32)).astype(np.float32)
labels = np.random.random((1000,10)).astype(np.float32)
Run Code Online (Sandbox Code Playgroud)

但我确实认为作为教程中的一段示例代码,tensorflow 应该确保它运行。

更新:有一个与此相关的已关闭问题:https ://github.com/tensorflow/tensorflow/issues/22207