return self._dims[key].value IndexError: list index out of range Tensorflow indexError
return self._dims[key].value IndexError: list index out of range Tensorflow indexError
在张量流中,我制作了一个以散列作为输入的常规网络。作为一个例子,我使用了内置的 python hash()
函数(是的,它在每个会话中都改变了盐,但这是一个例子)
代码是这样的:
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```
问题是您正在从散列值创建一个 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
预测 运行 没有错误。
在张量流中,我制作了一个以散列作为输入的常规网络。作为一个例子,我使用了内置的 python hash()
函数(是的,它在每个会话中都改变了盐,但这是一个例子)
代码是这样的:
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")))
错误在预测中。我在
和追溯:
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```
问题是您正在从散列值创建一个 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
预测 运行 没有错误。