或者该教程的某个地方可能有错字。也许只是我的版本中存在一个错误(请参阅注释;无法通过pip
在线升级)。也许我做错了什么。 我想知道该怎么做。
This tensorflow keras tutorial with datasets是以片段形式呈现的,但是我已将其尽可能最佳地组装起来,如下所示(请注意,我必须进行一些更改,例如“ import keras layers”语句和在第一层添加一个input_shape
,因为没有它的代码就会炸毁):
import tensorflow as tf
from tensorflow.contrib.keras.api.keras import layers
import numpy as np
print(tf.VERSION)
print(tf.keras.__version__)
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))
# Instantiates a toy dataset instance:
dataset = tf.data.Dataset.from_tensor_slices((data, labels))
dataset = dataset.batch(32)
dataset = dataset.repeat()
model = tf.keras.Sequential([
# Adds a densely-connected layer with 64 units to the model:
layers.Dense(64, activation='relu', input_shape=(32,)),
# Add another:
layers.Dense(64, activation='relu'),
# Add a softmax layer with 10 output units:
layers.Dense(10, activation='softmax')])
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
# Don't forget to specify `steps_per_epoch` when calling `fit` on a dataset.
model.fit(dataset, epochs=10, steps_per_epoch=30)
完整输出:
1.6.0
2.1.3-tf
Traceback (most recent call last):
File "<ipython-input-9-47ae8a0a1bac>", line 1, in <module>
runfile('C:/Users/1134400/Documents/Python/python3/test.py', wdir='C:/Users/1134400/Documents/Python/python3')
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/1134400/Documents/Python/python3/test.py", line 31, in <module>
model.fit(dataset, epochs=10, steps_per_epoch=30)
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\_impl\keras\models.py", line 920, in fit
validation_steps=validation_steps)
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\_impl\keras\engine\training.py", line 1681, in fit
batch_size=batch_size)
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\_impl\keras\engine\training.py", line 1508, in _standardize_user_data
exception_prefix='input')
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\_impl\keras\engine\training.py", line 105, in _standardize_input_data
np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data
File "C:\Users\1134400\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\keras\_impl\keras\engine\training.py", line 105, in <listcomp>
np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data
AttributeError: 'RepeatDataset' object has no attribute 'ndim'
为什么这行不通?我的tensorflow / keras版本中是否存在错误?我的大部分为复制粘贴的代码中是否存在错误?
注释:
版本:
tf.VERSION
是1.12.0,而tf.keras.__version__
是2.1.6-tf。 tf.VERSION
为1.6.0,而tf.keras.__version__
为2.1.3-tf。 These notes for Keras 2.2.0这样说:
对于Keras 2.2.0和TensorFlow 1.8或更高版本,您可以使用符号TensorFlow张量进行拟合,评估和预测
该教程的版本早于此版本,因此显然支持tensorflow数据集。
These notes for Keras 2.07这样说:
更好地支持TensorFlow中数据张量的训练模型(例如数据集,TFRecords)。
该教程的版本比我的要新,因此应该已经存在数据集支持。
在Windows上为CPU使用Tensorflow。不是GPU。
我连接到互联网的网络上有一个限制性防火墙,该防火墙(1)我不受控制,(2)不允许pip
通过,因此简单地“使用{{1 }}升级”的方法不在桌面上。获取用于脱机安装的新版本需要花费一些精力,如果我犯了错误,我也不会受制于此
删除此行:pip
。异常更改为dataset = dataset.repeat()
。就像它无法使用数据集。
我不知道AttributeError: 'BatchDataset' object has no attribute 'ndim'
在做什么。在我的版本中,model.fit(dataset, ...)
的前两个位置参数是model.fit(...)
和x
。数据集是用元组构造的,因此是否要将数据集作为单个位置参数传递,应该从中隐式解压缩要素和标签?
答案 0 :(得分:2)
我遇到了同样的问题,我将tensorflow
更新为2.1.0
,并没有直接导入keras
,而是直接导入了import tensorflow.keras
。现在可以使用Dataset
来执行相同的破坏代码