Python 返回self.\u dims[key]。值索引器:列表索引超出范围Tensorflow索引器

Python 返回self.\u dims[key]。值索引器:列表索引超出范围Tensorflow索引器,python,machine-learning,keras,tensorflow2.0,Python,Machine Learning,Keras,Tensorflow2.0,在张量流中,我创建了一个以散列作为输入的规则网络。例如,我使用了内置pythonhash()函数(是的,它会在每个会话中更改salt,但这只是一个示例) 代码如下: from time import time st = time() import tensorflow as tf print(time() - st) import numpy as np import chess import atexit from numpy import shape data = open("da

在张量流中,我创建了一个以散列作为输入的规则网络。例如,我使用了内置python
hash()
函数(是的,它会在每个会话中更改salt,但这只是一个示例) 代码如下:

from time import time
st = time()
import tensorflow as tf
print(time() - st)
import numpy as np
import chess
import atexit
from numpy import shape
data = open("data.data", "r").readlines()[:10000]
targets = open("targets.data", "r").readlines()[:10000]
boards_data = []
new_targets = []
for i in data:
    boards_data.append(hash(i))
for i in targets:
    new_targets.append(float(i))
print(len(new_targets))
print(len(boards_data))
print(np.array(new_targets))
print(np.array(boards_data))

def create_model():
   model = tf.keras.models.Sequential()
   model.add(tf.keras.layers.Reshape((1,1,1)))
   model.add(tf.keras.layers.Dense(1000, activation="tanh"))
   model.add(tf.keras.layers.Flatten())
   model.add(tf.keras.layers.Dense(1, activation='tanh'))
   model.compile(loss="mse", optimizer="adam", metrics=['accuracy'])
   return model

model = create_model()
model.fit(np.array(boards_data), np.array(new_targets), epochs=10)
model.predict(np.array(hash("8/6P1/5k1K/6r1/8/8/8/8 b - - 0 83")))
误差在预测中。我在上看到了conv2d示例 但事实并非如此

追溯:

Traceback (most recent call last):
  File "/Volumes/POOPOO USB/lichess-bot/engines/engine2/nn_evaluation/nn_evaluation2.py", line 36, in <module>
    model.predict(np.array(hash("8/6P1/5k1K/6r1/8/8/8/8 b - - 0 83")))
  File "/Users/ofek/Library/Python/3.8/lib/python/site-packages/tensorflow/python/keras/engine/training.py", line 130, in _method_wrapper
    return method(self, *args, **kwargs)
  File "/Users/ofek/Library/Python/3.8/lib/python/site-packages/tensorflow/python/keras/engine/training.py", line 1569, in predict
    data_handler = data_adapter.DataHandler(
  File "/Users/ofek/Library/Python/3.8/lib/python/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 1105, in __init__
    self._adapter = adapter_cls(
  File "/Users/ofek/Library/Python/3.8/lib/python/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 275, in __init__
    num_samples = set(int(i.shape[0]) for i in nest.flatten(inputs))
  File "/Users/ofek/Library/Python/3.8/lib/python/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 275, in <genexpr>
    num_samples = set(int(i.shape[0]) for i in nest.flatten(inputs))
  File "/Users/ofek/Library/Python/3.8/lib/python/site-packages/tensorflow/python/framework/tensor_shape.py", line 887, in __getitem__
    return self._dims[key].value
IndexError: list index out of range```
回溯(最近一次呼叫最后一次):
文件“/Volumes/POOPOO-USB/lichess-bot/engines/engine2/nn_-evaluation/nn_-evaluation2.py”,第36行,在
模型预测(np.数组(散列(“8/6P1/5k1K/6r1/8/8/8B--083”))
文件“/Users/ofek/Library/Python/3.8/lib/Python/site-packages/tensorflow/Python/keras/engine/training.py”,第130行,在方法包装中
返回方法(self、*args、**kwargs)
文件“/Users/ofek/Library/Python/3.8/lib/Python/site packages/tensorflow/Python/keras/engine/training.py”,第1569行,在predict中
data\u handler=data\u adapter.DataHandler(
文件“/Users/ofek/Library/Python/3.8/lib/Python/site packages/tensorflow/Python/keras/engine/data_adapter.py”,第1105行,在u_init中__
self.\u adapter=适配器\u cls(
文件“/Users/ofek/Library/Python/3.8/lib/Python/site packages/tensorflow/Python/keras/engine/data_adapter.py”,第275行,在_init中__
num_samples=set(int(i.shape[0]),用于嵌套中的i.flatte(输入))
文件“/Users/ofek/Library/Python/3.8/lib/Python/site packages/tensorflow/Python/keras/engine/data_adapter.py”,第275行,在
num_samples=set(int(i.shape[0]),用于嵌套中的i.flatte(输入))
文件“/Users/ofek/Library/Python/3.8/lib/Python/site packages/tensorflow/Python/framework/tensor_shape.py”,第887行,在u getitem中__
返回self.\u dims[key].值
索引器:列表索引超出范围```

问题在于您正在从哈希值创建0d numpy字符串。只能在至少具有一个维度的数组上运行预测。 您可以检查哈希值是否为0d:

print(np.array(hash("8/6P1/5k1K/6r1/8/8/8/8 b - - 0 83")).shape)
# outputs: ()
与将哈希值放入列表的情况相比:

print(np.array([hash("8/6P1/5k1K/6r1/8/8/8/8 b - - 0 83")]).shape)
# outputs: (1,)

使用第二个
np.array
时,预测运行时不会出错。

问题是您正在从哈希值创建0d numpy字符串。预测只能在至少具有一个维度的数组上运行。 您可以检查哈希值是否为0d:

print(np.array(hash("8/6P1/5k1K/6r1/8/8/8/8 b - - 0 83")).shape)
# outputs: ()
与将哈希值放入列表的情况相比:

print(np.array([hash("8/6P1/5k1K/6r1/8/8/8/8 b - - 0 83")]).shape)
# outputs: (1,)

使用第二个
np.array
预测运行时不会出错。

请在链接到的线程中使用完整的错误跟踪更新您的帖子。请在链接到的线程中使用完整的错误跟踪更新您的帖子。预测不应干扰您的培训,我没有您的数据或其他信息来检查可能的错误错误。我建议打开一个新问题,详细说明您面临的新问题。预测不应干扰您的培训,而且我没有您的数据或其他信息来检查可能的错误。我建议打开一个新问题,详细说明您面临的新问题。