【问题标题】:TypeError: Expected float32, but got auto of type 'str'. Tensorflow error , tell me how to fix it?TypeError:预期为 float32,但得到了“str”类型的 auto。 TensorFlow 错误,告诉我如何解决?
【发布时间】:2022-01-05 16:34:56
【问题描述】:

我得到 TypeError: Expected float32, but got auto of type 'str'. 在拟合顺序模型时出错。 我检查了我的输入都是 numpy.ndarray。

type(xtrain),type(ytrain)
(numpy.ndarray, numpy.ndarray)

model = tf.keras.Sequential()

model.add(tf.keras.layers.Flatten(input_shape = (28,28)))
model.add(tf.keras.layers.Dense(32,activation='relu'))
model.add(tf.keras.layers.Dense(32,activation='relu'))
model.add(tf.keras.layers.Dense(10,activation=tf.keras.activations.softmax))

model.compile(loss = tf.keras.losses.SparseCategoricalCrossentropy,optimizer = 
    tf.keras.optimizers.Adam(learning_rate=.0001),metrics = ['accuracy'])

model.fit(x =xtrain,y = ytrain,epochs=100)

Epoch 1/100

TypeError Traceback(最近一次调用最后一次) 在 () ----> 1 model.fit(x =xtrain,y = ytrain,epochs=100)

1 帧 /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in autograph_handler(*args, **kwargs) 1127 例外为 e:# pylint:disable=broad-except 1128 如果有属性(例如,“ag_error_metadata”): -> 1129 引发 e.ag_error_metadata.to_exception(e) 1130 其他: 第1131章

TypeError:在用户代码中:

File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 878, in train_function  *
    return step_function(self, iterator)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 867, in step_function  **
    outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 860, in run_step  **
    outputs = model.train_step(data)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 810, in train_step
    y, y_pred, sample_weight, regularization_losses=self.losses)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/compile_utils.py", line 201, in __call__
    loss_value = loss_obj(y_t, y_p, sample_weight=sw)
File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 141, in __call__
    losses = call_fn(y_true, y_pred)
File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 245, in call  **
    return ag_fn(y_true, y_pred, **self._fn_kwargs)
File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 752, in __init__  **
    from_logits=from_logits)
File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 227, in __init__
    super().__init__(reduction=reduction, name=name)
File "/usr/local/lib/python3.7/dist-packages/keras/losses.py", line 88, in __init__
    losses_utils.ReductionV2.validate(reduction)
File "/usr/local/lib/python3.7/dist-packages/keras/utils/losses_utils.py", line 82, in validate
    if key not in cls.all():

TypeError: Expected float32, but got auto of type 'str'.

【问题讨论】:

    标签: python tensorflow deep-learning typeerror tensorflow2.0


    【解决方案1】:

    错误可能在这部分代码中:

    model.compile(loss = tf.keras.losses.SparseCategoricalCrossentropy,optimizer = tf.keras.optimizers.Adam(learning_rate=.0001),metrics = ['accuracy'])
    

    尝试将损失参数从tf.keras.losses.SparseCategoricalCrossentropy 更改为tf.keras.losses.SparseCategoricalCrossentropy()

    为了清楚起见,两者之间的区别在于,tf.keras.losses.SparseCategoricalCrossentropy 你是不是类的实例,tf.keras.losses.SparseCategoricalCrossentropy() 你是。

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2020-10-11
      • 1970-01-01
      • 2017-01-19
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      相关资源
      最近更新 更多