问题描述
[使用TF 2.0,python 3]
曾经被称为的问题:“如何在TF模型的图形中调用tf.py_function来使用python的日期时间进行特征提取?”
我通过弄乱来弄清楚。见下文。但是当我尝试运行model.predict()
时,我遇到了底部出现的错误 @Test
fun test() = testCoroutineRule.runBlockingTest {
val myTestData = mutablelivedata<Int>()
myTestData.value = 1
myTestData.value = 2
myTestData.value = 3
myTestData.test().values {
this.forEach {
println("? Test numbers: $it")
}
}
}
这行得通!您可以看出来,因为它打印出了正确的日期和星期值作为示例。 但是我在运行model.predict时仍然出现错误:
import numpy as np
import pandas as pd
import datetime as dt
import tensorflow as tf
from tensorflow.keras.layers import Dense,Lambda,Input
from tensorflow.keras import Model
from tensorflow.keras.optimizers import Adagrad
x_1 = np.array([['Dec 15,2020 @ 17:00:00.000'],['Oct 15,2019 @ 18:00:00.000'],['May 12,2017 @ 12:04:00.000'],['Mar 21,2018 @ 19:00:00.000'],['Jan 5,2018 @ 19:00:00.000']])
x_2 = np.array([[1.0],[2.0],[3.0],[4.0],[5.0]])
inputs = [x_1,x_2]
def week(date_):
date_ = date_.numpy()[0] # needed for eager mode to get a tf.map_fn or tf.py_function to work properly on batches of datetime string inputs
if type(date_)!=str:
date_=date_[0]
print(date_)
print(type(date_))
if date_==b'':
date_ = dt.datetime.today()
else:
date_ = dt.datetime.strptime(str(date_),"b'%b %d,%Y @ %H:%M:%s.%f'")
week = str(date_.isocalendar()[1])
print('date,week:',date_,week,' \n ')
return week
date_input_layer = tf.keras.layers.Input(shape=(1,),name='date_in',dtype=tf.string)
week_ = Lambda(lambda y: tf.py_function(week,[y],tf.string),name='week_')(date_input_layer)
numeric_input = tf.keras.layers.Input(shape=(1,dtype=tf.float32,name='numeric_in')
dense = Dense(1,input_dim=numeric_input.shape[1],activation='relu')(numeric_input)
model = Model(inputs=[date_input_layer,numeric_input],outputs=[dense,week_])
model.compile(loss=['mse',None],optimizer='adam')
history = model.fit(
x=inputs,y=np.array([[2.0],[9.0],[16.0],[25.0]]),batch_size=1,epochs=2,)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)