我目前正在尝试使用Tensorflow。在这里,我有一个近似于根函数的示例。这仍然相对简单,因为输入和输出是“浮点”值。
chart.xAxis.ticks()
但是如何创建一个以数组作为输入和输出的简单网络? 例如:
from tensorflow import keras
import numpy as np
model = keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.add(keras.layers.Dense(100))
model.add(keras.layers.Dense(100))
model.add(keras.layers.Dense(1))
model.compile(optimizer='sgd', loss='mean_squared_error')
xs = np.array([2.0, 5.0, 7.0, 9.0, 6.0, 4.0], dtype=float)
ys = np.array([1.41, 2.23, 2.64, 3.0, 2.44, 2.0], dtype=float)
model.fit(xs, ys, epochs=200)
print(model.predict([8.0]))
答案 0 :(得分:0)
如果要输入多维数组,则需要进行一些调整。例如:
您的xs = [[1,3,4,5], [9,2,3,4]]
的形状为[2,4]
。更准确地说,如果将其转换为numpy数组,它将具有该形状,如下所示:
np.array([np.array(x) for x in xs])
因此,要在形状为[2,4]
的数据上训练模型,首先需要设置输入形状
model = tf.keras.Sequential([layers.Dense(units=1, input_shape=[2,4])])
model.add(layers.Dense(100))
model.add(layers.Dense(4))
model.compile(optimizer='sgd', loss='mean_squared_error')
输出层有4个单位,与上一个尺寸相同。然后创建一些随机数据
xs = np.array([np.random.rand(2,4) for i in range(100)])
ys = np.array([xs[i]**2 for i in range(100)])
在这里,我们创建一个数组数组,每个数组的形状为[2,4]
和相同形状的标签数组,例如,它们都是正方形。
model.fit(xs, ys, epochs=10, batch_size=1)
然后将这些数据传递到模型中,将批次大小设置为1,这意味着将一次处理形状为[2,4]
的单个数组。
最后尝试使用另一个随机数组预测值。请注意,这里我们需要添加另一个维度,即批量大小。不必为1,而是可以考虑任意维度为[2,4]
p = np.random.rand(1,2,4)
print(model.predict(p))