Tensorflow 不训练:'DataFrame' 对象是可变的,因此它们不能被散列
Tensorflow doesn't train: 'DataFrame' objects are mutable, thus they cannot be hashed
我想在 kaggle 数据集 'House Prices' 上使用 tensorflow
构建和训练一个神经网络(但没有 Keras
,在 Keras
上我可以正常工作) .我使用 Python,除了实际训练之外,我的代码 运行 没问题。但是,在训练时,我要么没有错误(但没有训练),要么得到 TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
.
我 运行 在 ipynotebook 中 Google 的 colab 上的脚本,我认为主要问题在于输入 feed_dict
。但是,我不知道这里出了什么问题。 batch_X
包含 100x10
个特征,batch_Y
有 100
个标签。我想这可能是关键片段:
train_data = { X: batch_X, Y_:batch_Y }
train_data
是我喂给 sess.run(train_step, feed_dict=train_data")
这是我的代码:https://colab.research.google.com/drive/1qabmzzicZVu7v72Be8kljM1pUaglb1bY
# train and train_normalized are the training data set (DataFrame)
# train_labels_normalized are the labels only
#Start session:
with tf.Session() as sess:
sess.run(init)
possible_indeces = list(range(0, train.shape[0]))
iterations = 1000
batch_size = 100
for step in range(0, iterations):
#draw batch indeces:
batch_indeces = random.sample(possible_indeces, batch_size)
#get features and respective labels
batch_X = np.array(train_normalized.iloc[batch_indeces])
batch_Y = np.array(train_labels_normalized.iloc[batch_indeces])
train_data = { X: batch_X, Y_: batch_Y}
sess.run(train_step, feed_dict=train_data)
我希望的是它会 运行 几分钟,并且 return 具有优化的权重(2
个隐藏层,每个层有 48
个节点)让我做出预测。但是,它只是跳过了上面的代码或者抛出了下面的错误。
有人知道哪里出了问题吗?
TypeError Traceback (most recent call last)
<ipython-input-536-79506f90a868> in <module>()
13 batch_Y = p.array(train_labels_normalized.iloc[batch_indeces])
14
---> 15 train_data = { X: batch_X, Y_: batch_Y}
16
17 sess.run(train_step, feed_dict=train_data)
/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in __hash__(self)
1814 def __hash__(self):
1815 raise TypeError('{0!r} objects are mutable, thus they cannot be'
-> 1816 ' hashed'.format(self.__class__.__name__))
1817
1818 def __iter__(self):
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
问题出在您的第七(测试)步骤。
#Set X to the test data
X = test_normalized.astype(np.float32)
print(type(X)) # **<class 'pandas.core.frame.DataFrame'>**
Y1 = tf.nn.sigmoid(tf.matmul(X, W1))
Y2 = tf.nn.sigmoid(tf.matmul(Y1, W2))
Y3 = tf.matmul(Y2, W3)
您正在将 X
设置为 DataFrame。在第一个 运行 这不会影响任何东西。但是,当您 运行 第七步之后的第六步时,您会 运行 遇到这个问题,因为您已经覆盖了 X
.
的内容
尝试将 X
更改为 X_
:
X_ = test_normalized.astype(np.float32)
Y1 = tf.nn.sigmoid(tf.matmul(X_, W1))
此外,您的最终评估无效。把它变成 tf.Session
.
我想在 kaggle 数据集 'House Prices' 上使用 tensorflow
构建和训练一个神经网络(但没有 Keras
,在 Keras
上我可以正常工作) .我使用 Python,除了实际训练之外,我的代码 运行 没问题。但是,在训练时,我要么没有错误(但没有训练),要么得到 TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
.
我 运行 在 ipynotebook 中 Google 的 colab 上的脚本,我认为主要问题在于输入 feed_dict
。但是,我不知道这里出了什么问题。 batch_X
包含 100x10
个特征,batch_Y
有 100
个标签。我想这可能是关键片段:
train_data = { X: batch_X, Y_:batch_Y }
train_data
是我喂给 sess.run(train_step, feed_dict=train_data")
这是我的代码:https://colab.research.google.com/drive/1qabmzzicZVu7v72Be8kljM1pUaglb1bY
# train and train_normalized are the training data set (DataFrame)
# train_labels_normalized are the labels only
#Start session:
with tf.Session() as sess:
sess.run(init)
possible_indeces = list(range(0, train.shape[0]))
iterations = 1000
batch_size = 100
for step in range(0, iterations):
#draw batch indeces:
batch_indeces = random.sample(possible_indeces, batch_size)
#get features and respective labels
batch_X = np.array(train_normalized.iloc[batch_indeces])
batch_Y = np.array(train_labels_normalized.iloc[batch_indeces])
train_data = { X: batch_X, Y_: batch_Y}
sess.run(train_step, feed_dict=train_data)
我希望的是它会 运行 几分钟,并且 return 具有优化的权重(2
个隐藏层,每个层有 48
个节点)让我做出预测。但是,它只是跳过了上面的代码或者抛出了下面的错误。
有人知道哪里出了问题吗?
TypeError Traceback (most recent call last)
<ipython-input-536-79506f90a868> in <module>()
13 batch_Y = p.array(train_labels_normalized.iloc[batch_indeces])
14
---> 15 train_data = { X: batch_X, Y_: batch_Y}
16
17 sess.run(train_step, feed_dict=train_data)
/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in __hash__(self)
1814 def __hash__(self):
1815 raise TypeError('{0!r} objects are mutable, thus they cannot be'
-> 1816 ' hashed'.format(self.__class__.__name__))
1817
1818 def __iter__(self):
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
问题出在您的第七(测试)步骤。
#Set X to the test data
X = test_normalized.astype(np.float32)
print(type(X)) # **<class 'pandas.core.frame.DataFrame'>**
Y1 = tf.nn.sigmoid(tf.matmul(X, W1))
Y2 = tf.nn.sigmoid(tf.matmul(Y1, W2))
Y3 = tf.matmul(Y2, W3)
您正在将 X
设置为 DataFrame。在第一个 运行 这不会影响任何东西。但是,当您 运行 第七步之后的第六步时,您会 运行 遇到这个问题,因为您已经覆盖了 X
.
尝试将 X
更改为 X_
:
X_ = test_normalized.astype(np.float32)
Y1 = tf.nn.sigmoid(tf.matmul(X_, W1))
此外,您的最终评估无效。把它变成 tf.Session
.